MVC - 12.HtmlHelper
1.动态生成URL
- @Url.Action("Index3","Stu3")
- @Url.RouteUrl("Default2", new { controller = "Stu3", action = "Index3", id = UrlParameter.Optional })
2.在视图上直接请求其他action
- @Html.Action("actionName")
3.生成超链接
- @Html.ActionLink("我是超链接~", "Party", "Home", new { id = "newId", style = "color:red" })
4.表单Form
- 4.1.@using (Html.BeginForm())
- 4.2.Begin End
5.弱类型和强类型方法
- 5.1.弱类型方法:@Html.TextBox("Title",model.Title);
- 5.2.强类型方法:@Html.TextBoxFor(s=>s.Name)
6.LabelFor & 模型元数据
- @Html.LabelFor(s=>s.Name)
7.Display / Editor 模型元数据
- [DataType(DataType.Password)]
- @Html.EditorFor(s=>s.Name)
1.动态生成URL

RouteConfig.cs
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Stu", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default2",
url: "{action}/{controller}/{id}",//{action}/{controller}位置改编
defaults: new { controller = "Stu", action = "Index", id = UrlParameter.Optional }
);
Html/index.cshtml
直接编写 url 造成格式固定,不灵活<br/>
<a href="/Stu/Index">1.去玩</a><br />
Url.Action 方法 根据 路由规则生成 url 地址<br />
<a href="@Url.Action("Index3","Stu3")">2.去玩Url.Action</a><br />
Url.RouteUrl 方法 根据 路由 name 生成 url 地址,更灵活<br />
<a href="@Url.RouteUrl("Default2", new { controller = "Stu3", action = "Index3", id = UrlParameter.Optional })">
3.去玩 Url.RouteUrl
</a>
2.在视图上直接请求其他action
@Html.Action("actionName")
参考:8.4 MVC – 8.Razor 布局
3.生成超链接
@Html.ActionLink("我是超链接~", "Party", "Home", new { id = "newId", style = "color:red" })
html源代码
<a href="/Html/Party?Length=4" id="newId" style="color:red">我是超链接~</a>
4.表单Form

4.1.强烈推荐第一种用法
@using (Html.BeginForm("HandleForm", "Home", FormMethod.Post, new { id = "form1" }))
{
<input type="text" />
}
4.2.Begin End
@Html.BeginForm("HandleForm", "Home", FormMethod.Post, new { id = "form2" })
<input type="text" />
@{Html.EndForm();}
5.弱类型和强类型方法
5.1.弱类型方法:
指定 name 和 value
@Html.TextBox("Title",model.Title);
<input id="Title" name="Title" type="text" value="aaaa" /></form>
@Html.RadioButton("chkHabit","篮球",true)
<input checked="checked" id="chkHabit" name="chkHabit" type="radio" value="篮球" />
等其他控件方法也一样
5.2.强类型方法:
强类型方法名有"For"后缀

因为在Razor引擎内部,<> 尖括号在这里被识别为html标签
通过lambda表达式指定模型属性(@model)
@model _06MVCAjax_CodeFirst.Models.Student

@Html.TextBoxFor(s=>s.Name)
@Html.DropDownListFor(s => s.Cid, ViewBag.seList as IEnumerable<SelectListItem>)
特殊案例:
单选按钮:性别
@*<input type="radio" id="GenderFF" name="Gender" value="保密" checked="checked" />保密
<input type="radio" id="GenderM" name="Gender" value="男" />男
<input type="radio" id="GenderW" name="Gender" value="女" />女*@
@Html.RadioButtonFor(s => s.Gender, "保密", new { id = "GenderFF" })保密
@Html.RadioButtonFor(s => s.Gender, "男", new { id = "GenderM" })男
@Html.RadioButtonFor(s => s.Gender, "女", new { id = "GenderW" })女
js
//性别
if (jsonObj.Data.Gender=="男") {
$("#GenderFF").removeAttr("Checked");
$("#GenderW").removeAttr("Checked");
$("#GenderM").attr("Checked","Checked");
}else if (jsonObj.Data.Gender=="女") {
$("#GenderFF").removeAttr("Checked");
$("#GenderM").removeAttr("Checked");
$("#GenderW").attr("Checked","Checked");
}else {
$("#GenderM").removeAttr("Checked");
$("#GenderW").removeAttr("Checked");
$("#GenderFF").attr("Checked","Checked");
}
6.LabelFor & 模型元数据
把姓名,班级,性别改为lable标签
@Html.LabelFor(s=>s.Name)
@Html.LabelFor(s => s.Cid)
@Html.LabelFor(s => s.Gender)
效果如下:

<label for="Name">Name</label>
<label for="Cid">Cid</label>
<label for="Gender">Gender</label>
解决方案:
模型类的元数据包括:属性(名称和类型) 与特性包含的值。
为实体类属性设置 DisplayName 特性:
[DisplayName("班级名")]
public Nullable<int> Cid { get; set; }
注意:DisplayName需要命名空间
using System.ComponentModel;
生成的html代码:
<label for="Name">姓名</label>
7.Display / Editor 模型元数据
@Html.Editor / @Html.Display 可以通过读取特性值生成HTML:
[DataType(DataType.Password)]
public string Name { get; set; }
注意:DataType需要命名空间:
using System.ComponentModel.DataAnnotations;
在 新增/修改 页面上显示某个属性的input标签:
@*<input type="text" id="Name" name="Name" />*@
@Html.EditorFor(s=>s.Name)
生成的html代码:
<input type="password" value="" name="Name" id="Name" class="text-box single-line password">
MVC - 12.HtmlHelper的更多相关文章
- MVC中HtmlHelper用法大全参考
MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...
- MVC 自定义Htmlhelper扩展
在MVC中,我们不仅可以使用它原来的方法,我们还可以自定义,这不不仅加大了我们开发的效率,同时使界面更简洁. 具体什么是扩展方法,你可以这样理解,必须是静态且在形参中第一个参数是以this开头,大概先 ...
- 返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性
原文:返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性 [索引页][源码下载] 返璞归真 asp.net mvc (12) - asp.net mvc ...
- MVC之htmlhelper总结
自学习mvc以来,htmlhelper使用的也非常多,下面开始总结一下吧,由于本人比较懒,内容大部分摘自slark.net的笔记, 有人问为什么用这个htmlhelper,我就喜欢用原生的标签,这个按 ...
- asp.net MVC添加HtmlHelper扩展示例和用法
一.先创建一个HtmlHelper的扩展类,代码: using System; using System.Collections.Generic; using System.Linq; using S ...
- ASP.NET MVC 扩展HtmlHelper类方法
1.扩展HtmlHelper类方法ShowPageNavigate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- mvc 扩展htmlhelper
using System.Web.Mvc; namespace System.Web.Mvc{ public static class HtmlExtend { public ...
- ASP.NET MVC Razor HtmlHelper扩展和自定义控件
先看示例代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using S ...
- MVC采用HtmlHelper扩展和Filter封装验证码的功能
最近因为有个项目除了登录还有其他很多地方需要用到验证码的功能,所以想到了采用HtmlHelper和ActionFilter封装一个验证码的功能,以便能够重复调用.封装好以后调用很方便,只需在View中 ...
随机推荐
- 【优先队列】【UVa11997】K Smallest Sums
传送门 Description Input Output Translation · 给定k个长度为k的数组,把每个数组选一个元素加起来,这样共有kk种可能的答案,求最小的k个 Sample Inpu ...
- 如何将javascript对象转换成字符串
将后台程序(如php)发送过来的json数据转化为javascript的数组或者对象的方法十分简单,代码如下: 1 // 假设后台发送的json数据为 '{a:2,b:1}' 存储于str中 2 va ...
- Java Web用Freemarker生成带图片的Word文档
步骤一:模板制作 用world2003做一个导出模板,如果有图片则加入一张图片占位,将world另存为xml,将xml中需要导出的内容用Freemarker标签表示,最后另存为.ftl结尾的模板: 步 ...
- 常州模拟赛d7t3 水管
分析:第一问还是很好做的,关键是怎么做第二问.我们可以每次删掉最小生成树上的一条边,然后再求一次最小生成树,看边权和大小和原来的是不是一样的,不过这个做法效率很低. 考虑Kruskal算法的原理,每次 ...
- noip模拟赛 helloworld
分析:对于第一个点,答案为26^n - 25^n,这个很好想.另外30%的点因为n <= 5,所以可以直接暴力搜索. 数学方法不是很好处理,考虑dp,设f[i][j]为前i位匹配到危险串第j位的 ...
- OpenCV学习笔记(01)我的第一个OpenCV程序(环境配置)
昨天刚刚考完编译原理,私心想着可以做一些与考试无关的东西了.一直想做和图像处理相关的东西,趁这段时间有空学习一下OpenCV,搭建环境真是一件麻烦的事情,搞了近三个小时终于OK了.先来张图: 大致描述 ...
- 管理页面的 setTimeout & setInterval
在管理 setTimeout & setInterval 这两个 APIs 时,笔者通常会在顶级(全局)作用域创建一个叫 timer 的对象,在它下面有两个数组成员 —— {sto, siv} ...
- 快速排序Quick sort
快速排序Quick sort 原理,通过一趟扫描将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归 ...
- ASP.NET 设置DropDownList的当前选项
1.通过显示字符Text DropDownList.Items.FindByText("你的值").Selected=true; 如果在设置之前,进行过设置,应用如下格式: Dro ...
- jqgrid 翻页记录选中行
简单的jqgrid列表 $("#list").jqGrid({ url:contextPath + "/getList", postData: data, da ...