02 August 2015 HTML辅助方法 1. 超链接:Html.ActionLink 2. 表单提交:Html.BeginForm 3. 使用GET方式提交表单 4. 使用上传(提交)文件功能 5. 常用的表单输入辅助方法 6. 强类型的辅助方法 6.1. 使用强类型辅助方法的例子 6.2. 使用辅助方法加载分布视图 HTML辅助方法,也就是HtmlHelper,就是帮助快捷的产生HTML标签的作用。 HTML辅助方法可以编写超链接、表单()、输入框、选项、加载其他的分布视图(Partial View)等。 1. 超链接:Html.ActionLink @Html.ActionLink()用于产生超链接。并且链接的文字部分会自动的进行HTML编码(HtmlEncode)。 Html.ActionLink()方法重载: @Html.ActionLink("链接文字","Action_Name"):该语法生成的超链接,点击后会跳转到“Action_Name(控制器方法)”所指向的Action。由于这里并没有指定“Controller”的名字,所以会指向默认(该页面所属)的控制器。 @Html.ActionLink("链接文字","Action_Name","Controller_Name"):如要将链接指向其他控制器(不是当前页面所属)时,应该在第三参数中注明控制器的名称。 @Html.ActionLink("链接文字","Action_Name",new {id = 12,page = 5}):当链接需要额外的路由参数时,可以传入匿名类型的数据。比如这里会生成这样的标签:<a href="/Controller_Name/Action_Name?id=12&page=5">链接文字</a> @Html.ActionLink("链接文字","Action_Name",null,new {@class = "btnLink"}):当要在生成的HTML标签中加入额外的HTML属性时,可以在第四个参数中加入。比如设置HTML的class属性。但是由于class是c#中的关键字,所以在 这里使用时需要在前面加上@符号;而且当需要输出带有“-”数属性时(HTML5的属性),比如“data-value”,需要将“-”换成“_”。 使用Html.ActionLink()时,第一个参数不能输入空字符串或者null值,否则就会抛出异常。 2. 表单提交:Html.BeginForm @Html.BeginForm()可以生成表单提交标签。表单的提交方式默认为Post,可以使用参数将提交方式修改为GET。 Html.BeginForm()的两种使用方法: 1. 使用@using{}包裹住Html.BeginForm()以及表单中的标签成员 1 2 3 4 5 6 @using(Html.BeginForm()) { <p>账号:@html.TextBox("Account")</p> <p>密码:@Html.PassWord("PassWord")</p> <input type="submit" value="注册" /> } 在开头和结尾分别使用Html.BeginForm()、Html.EndForm() 1 2 3 4 5 @{Html.BeginForm("About","Home");} @Html.TextArea("Date") @Html.TextArea("123") <input type="submit" /> @{Html.EndForm();} 推荐使用using的方式编写Html.BeginForm(),因为代码比较可看。 3. 使用GET方式提交表单 如果要使用GET方式提交表单,可以输入第三个参数FormMethod.Get: 1 2 3 4 5 @using(Html.BeginForm("Search","Home",FormMethod.Get)) { @Html.TextArea("2333") <input type="submit" /> } 4. 使用上传(提交)文件功能 想要实现上传文件的功能,需要在<form>表单中增加一个enctype属性,所以在Html.BeginForm()中需要添加第四个参数: 因为Html辅助方法中没有File方法,所以需要借助TextBox方法来代替,然后给TextBox传入第三个参数将type属性修改为file。 1 2 3 4 5 6 7 8 9 10 11 @using(Html.BeginForm("Upload","File",FormMethod.Post,new {enctype = "multipart/from-data"})) { @Html.TextBox("FileName","",new {type="file",size="10"}) <input type="submit" /> } <!--输出的HTML代码为:--> <form action="/File/Upload" enctype="multipart/from-data" method="post"> <input id="FileName" name="FileName" size="10" type="file" value="" /> <input type="submit" /> </form> 5. 常用的表单输入辅助方法 ● Html.BeginForm():输出<form>标签 ● Html.EndForm():输出</form>标签 ● Html.Lable():输出<lable>标签 ● Html.TextBox():输出<input type="text" />标签 ● Html.TextArea():输出<textarea>标签,可以指定rows和column的值。 ● Html.PassWord():输出<input type="password" />标签 ● Html.Checkbox():输出<input type="checkbox" />标签 ● Html.RadioButton():输出<input type="radio" />标签,可以指定是否要默认选取预设值@Html.ReadioButton("name","vlaue",true)。 ● Html.DropDownList():输出<select>标签 ● Html.ListBox():输出<select mulitiple>标签 ● Html.Hidden():输出<input type="hidden"/>标签 ● Html.ValidationSummary():输出表单验证失败是的错误信息摘要 这些标签大多都有重载,比如@Html.TextBox()重载: 1 2 3 @Html.TextBox("UserName","Is2",new{id="textId"}) <!--输出下面的HTML代码:--> <input id="textId" name="UserName" type="text" value="Is2" /> 6. 强类型的辅助方法 强类型的辅助方法也就是可以在辅助方法中使用@model加载需要的内容,而且可以使用简洁的lambda表达式。 强类型的辅助方法名称基本上就是“原本的名字后面加上For”,比如@Html.TextBox()的强类型形式就是@Html.TextBoxFor()。 要使用强类型的辅助方法,需要在View最开始注明强类型模式:@model MvcApplicationTest.Product。 6.1. 使用强类型辅助方法的例子 数据模型: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace MvcApplicationTest { public class Product { public int Id{ get; set; } [Required] [DisplayName("产品名称")] public string Name{ get; set; } [Required] [DisplayName("产品说明")] public string Description{ get; set; } [Required] public int UnitPrice{ get; set; } } } View: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 @model MvcApplicationTest.Product @using(Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <h2>产品信息</h2> <div> @Html.LableFor(model=>model.Name) </div> <div> @Html.LableFor(model=>model.Description) </div> <input type="submit" /> </fieldset> } 6.2. 使用辅助方法加载分布视图 使用@Html.Partial()方法可以在View中加载一个分布视图(Partial View)。 因为分布视图是片段式的,所以需要在一个完整页面中加载分布视图。如果分布视图中需要参数,也可以在方法中传入。 index.cshtml 1 2 3 @model MvcApplicationTest.Product @Html.Partial("ProductInfo",(object)model.Name) Partial View(ProductInfo) 1 2 3 @model System.String @Html.TextBox(model) Please enable JavaScript to view the comments powered by Disqus.