在ASP.NET MVC框架中没有了自己的控件,页面显示完全就回到了写html代码的年代。还好在asp.net mvc框架中也有自带的HtmlHelper和UrlHelper两个帮助类。另外在MvcContrib扩展项目中也有扩展一些帮助类,这样我们就不光只能使用完整的html来编写了需要显示的页面了,就可以使用这些帮助类来完成。

  1.ActionLink

    <div>
@Html.ActionLink("这是一个测试", "Other", "Home"); 带有QueryString的写法
@Html.ActionLink("这是一个测试", "Other", "Home", new { page = 1 });
@Html.ActionLink("这是一个测试", "Other", "Home", new { page = 1 }, null); QueryString与Html属性同时存在
@Html.ActionLink("这是一个测试", "Other", "Home", new { page = 1 }, new { id = "link1" })
@Html.ActionLink("这是一个测试", "Other", new { page = 1 }, new { id = "link1" }) 实际用途(弹出新窗口)
@Html.ActionLink("这是一个测试", "Other", "Home", new { page = 1 }, new { target = "_blank" });
</div>
   生成结果: 
<div>
<a href="/Home/Other">这是一个测试</a>; 带有QueryString的写法
<a href="/Home/Other?Length=4" page="1">这是一个测试</a>;
<a href="/Home/Other?page=1">这是一个测试</a>; QueryString与Html属性同时存在
<a href="/Home/Other?page=1" id="link1">这是一个测试</a>
<a href="/Home/Other?page=1" id="link1">这是一个测试</a> 实际用途(弹出新窗口)
<a href="/Home/Other?page=1" target="_blank">这是一个测试</a>;
</div>
 

  2.RouteLink 跟ActionLink功能一样

 <%=Html.RouteLink("关于", "about", new { })%>
带QueryString
<%=Html.RouteLink("关于", "about", new { page = 1 })%>
<%=Html.RouteLink("关于", "about", new { page = 1 }, new { id = "link1" })%> 生成结果:
<a href="/about">关于</a>
<a href="/about?page=1">关于</a>
<a href="/about?page=1" id="link1">关于</a>

  3.Form表单

    <div>
@using (Html.BeginForm("Other", "Home", FormMethod.Post, new { id = "myForm" }))
{ }
</div>
   生成结果:
<div>
<form action="/Home/Other" id="myForm" method="post"></form>
</div>

  4.TextBox和TextBoxFor

  TextBox和TextBox的不同是,TextBoxFor里面可以存放Model的字段值,而TextBox不可以

    <div>
@Html.TextBox("txtName", "ChenChunXiao", new { style = "width:300px" })
@Html.TextBoxFor(a => a.CategoryName, new { @style = "width:300px;" })
</div> 生成结果
<input id="txtName" name="txtName" style="width:300px" type="text" value="ChenChunXiao" />
<input id="CategoryName" name="CategoryName" style="width:300px;" type="text" value="Beverages" />

   5.TextArea和TextAreaFor

@Html.TextArea("input5", Model.CategoryName, 3, 9,null)
@Html.TextAreaFor(a => a.CategoryName, 3, 3, null) 生成结果:
<textarea cols="9" id="input5" name="input5" rows="3">Beverages</textarea>
<textarea cols="3" id="CategoryName" name="CategoryName" rows="3">Beverages</textarea>

  6、CheckBox和CheckBoxFor (除了生成CHEKCBOX的HTML还会生成HIDDEN的HTML)

@Html.CheckBox("chk1",true)
@Html.CheckBox("chk1", new { @class="checkBox"})
@Html.CheckBoxFor(a =>a.IsVaild, new { @class = "checkBox" }) 生成结果
<input checked="checked" id="chk1" name="chk1" type="checkbox" value="true" /><input name="chk1" type="hidden" value="false" />
<input class="checkBox" id="chk1" name="chk1" type="checkbox" value="true" /><input name="chk1" type="hidden" value="false" />
<input checked="checked" class="checkBox" id="IsVaild" name="IsVaild" type="checkbox" value="true" /><input name="IsVaild" type="hidden" value="false" />

   7、ListBox

    <div>
@{
List<SelectListItem> dropList = new List<SelectListItem>();
for (int i = ; i < ; i++)
{
var dropItem = new SelectListItem();
dropItem.Value = i.ToString();
dropItem.Text = i.ToString();
dropList.Add(dropItem);
}
}
@Html.DropDownList("myList", dropList, "请选择")
</div> 生成代码
<select id="myList" name="myList">
<option value="">请选择</option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>

 二、扩展方法

采用这样的方式,我们通常需要新建一个文件夹,专门存放我们自定义的辅助方法(很多时候,我们自定义的辅助方法可能很多,但像是Controller,Models这样的文件夹并不适合存放这些方法),其实也就是专门为辅助方法建立一个新的命名空间。

  我在自己的包里建下这个扩展方法:

namespace Package.Utility
{
public static class Tool
{
public static string Truncate(this HtmlHelper helper, string input, int length)
{
if (input.Length <= length)
{
return input;
}
else
{
return input.Substring(, length) + "...";
}
}
}
}

  然后我在View视图里,先引用这个命名空间后,就可以直接使用该HTMLHELPER的扩展方法了。

@using Package.Utility
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Test</title>
</head>
<body>
<div>
@Html.Truncate("myHelper", 3)
</div>
</body>
</html>

三、Helper扩展方法的使用

直接看一下代码例子

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
@helper ShowHelloWorld(string str)
{
<div>@str</div>
}
<div>
@ShowHelloWorld("Hello World CCx")
</div>
</body>
</html>

参考文章
常用的  http://www.cnblogs.com/fishtreeyu/archive/2011/03/23/1992498.html

     http://www.cnblogs.com/longgel/archive/2010/02/03/1662894.html

扩展的  http://www.cnblogs.com/wenjiang/archive/2013/03/30/2990854.html

ASP.NET MVC- HtmlHelper的用法的更多相关文章

  1. ASP.NET MVC HtmlHelper用法集锦

    ASP.NET MVC HtmlHelper用法集锦 在写一个编辑数据的页面时,我们通常会写如下代码 1:<inputtype="text"value='<%=View ...

  2. 扩展ASP.NET MVC HtmlHelper类

    在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...

  3. asp.net mvc htmlHelper

    ASP.NET MVC 3.0 HTML辅助方法   HTML辅助方法(html helper)是用来帮助生成HTML的方法. 1.HTML辅助方法应用实例 ◊ 生成form元素 @using (Ht ...

  4. ASP .NET MVC HtmlHelper扩展——简化“列表控件”的绑定

    在众多表单元素中,有一类<select>元素用于绑定一组预定义列表.传统的ASP.NET Web Form中,它对应着一组重要的控件类型,即ListControl,我们经常用到DropDo ...

  5. ASP.NET MVC HtmlHelper 类的扩展方法

    再ASP.NET MVC编程中用到了R语法,在View页面编辑HTML标签的时候,ASP.NET MVC 为我们准备好了可以辅助我们写这些标签的办法,它们就是HtmlHelper.微软官方地址是:ht ...

  6. [转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择

    本文转自:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-htmlhelper-calendar-datetime-select/ 这里我们扩展HtmlHe ...

  7. asp.net MVC过滤器的用法(转)

    转自:http://www.studyofnet.com/news/257.html APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再 ...

  8. C# ASP.NET MVC HtmlHelper用法大全

    UrlHrlper 下面的两个地址一样的功能 下边这个防止路由规则改变 比如UserInfo/Index改为UserInfo-Index,使用下面的不受影响 另一种形式的超链接: <%: Htm ...

  9. ASP.NET MVC HtmlHelper用法大全

    HTML扩展类的所有方法都有2个参数: 以textbox为例子public static string TextBox( this HtmlHelper htmlHelper, string name ...

  10. 【MVC】ASP.NET MVC HtmlHelper用法大全

    1.ActionLink <%=Html.ActionLink("这是一个连接", "Index", "Home")%>   带 ...

随机推荐

  1. windows下用mingw编译linux项目

    1.下载安装mingw32 2.将mingw下bin和msys\1.0下bin设置为系统path 3.启动msys.bat 4.cd到项目目录 5.输入./configure 6.输入make 7.输 ...

  2. (六) 6.2 Neurons Networks Backpropagation Algorithm

    今天得主题是BP算法.大规模的神经网络可以使用batch gradient descent算法求解,也可以使用 stochastic gradient descent 算法,求解的关键问题在于求得每层 ...

  3. HDU 产生冠军 2094

    解题思路:这题重在分析,可能你知道的越多,这题想得越多,什么并查集,什么有向图等. 事实是,我们会发现,只要找到一个,并且仅有一个的入度为0的点,说明可以找出   冠军.若入度为0的点一个都没有,说明 ...

  4. Android Studio 学习 - AndroidManifest.xml文件学习

    首先,今天发现了一个很牛逼的教程网站:慕课网(http://www.imooc.com/).有很多大牛发布的教学视频.值得收藏.学习. 今天主要参照陈启超老大的视频,学习了多个Activity之间的切 ...

  5. Hibernate-Criteria Queries

    1.实例 接口org.hibernate.Criteria针对特殊持久层类进行查询,Sesion是Criteria的工厂: Criteria crit = sess.createCriteria(Ca ...

  6. Hadoop 学习总结之一:HDFS简介

    一.HDFS的基本概念 1.1.数据块(block) HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块. 和普通文件系统相同的是,HDFS ...

  7. php5.2转向 PHP 5.3 的 PHP 开发

    PHP 5.3 开始,为了更好的向 PHP 的未来版本(PHP6) 过渡,将未来不再支持的函数标记为 DEPRECATED.在代码中使用这些函数,将毫不留情的在页面中显示警告信息:“使用了过时的函数… ...

  8. 折腾了半天,终于搞定了apache的rewrite功能

    基本步骤和网上其它文章说得基本一样.只是在具体操作的时候或多或少存在些问题 一 打开 apache 的配置文件 httpd.conf . 二 将#loadmodule rewrite_module m ...

  9. Android 应用启动速度优化

    现在很多的应用一开始点击的时候总会出现黑屏或者白屏,甚至前段时间微信也有同样的问题.其实白屏或者黑屏还是一些其他的东西,都是因为Android 主题的问题,只要自己自定义一个启动主题,问题完美解决. ...

  10. 【Linux】Semaphore信号量线程同步的例子

    0. 信号量 Linux下的信号量和windows下的信号量稍有不同. Windows Windows下的信号量有一个最大值和一个初始值,初始值和最大值可以不同.  而且Windows下的信号量是一个 ...