一、返回html形式的字符的两种方法:
1.使用MvcHtmlString()
return new MvcHtmlString("<form>Enter your password:<input type=text><input type=submit value="Log In"/></form>");
2.使用Html.Raw(str)
@Html.Raw(@"<form>Enter your password:<input type=text><input type=submit value='LogIn'/></form>")
上面的两个方法都会输出一个表单。如果直接使用下面的方法的话,返回一个乱码
return "<form>Enter your password:<input type=text><input type=submit value="Log In"/></form>");
二、html扩展标签
1.定义一个HtmlExtension
public static MvcHtmlString CreateUL(this HtmlHelper html, string[] listItems) { TagBuilder tag = new TagBuilder("ul"); //方法 //AddCssClass() – 允许你向标签添加一个新的 class = "" 属性。 //GenerateId() - 允许你为标签添加一个id属性。这个方法自动替换id中的句点(默认情况下,句点将会替换为下划线)。 //MergeAttribute() - 允许你为标签添加属性。这个方法拥有大量的重载。 //SetInnerText() - 允许你设置标签内部的文本。内部文本自动进行了HTML编码。 //ToString() - 允许你呈现标签。你可以指定是否想要创建一个正常的标签、一个开始标签、一个结束标签,或者一个自闭合(self-closing)标签。 //TagBuilder类拥有四个重要的属性: //Attributes - 代表这个标签的所有属性。 //IdAttributeDotReplacement - 代表GenerateId()方法所使用的,用来替代句点的字符(默认是下划线)。 //InnerHTML - 代表着标签内部的内容。将一个字符串赋值给这个属性,并不会对这个字符进行HTML编码。 //TagName - 代表着这个标签的名称。 var builter = new TagBuilder("li"); for(int i=0;i<listItems.Length;i++) { //定义一个标签 TagBuilder itemTag = new TagBuilder("li"); //为标签添加类名 itemTag.AddCssClass("myclass"); //为标签添加属性名 itemTag.MergeAttribute("background","red"); //为标签自动生成id itemTag.GenerateId("liID"+i.ToString()); itemTag.SetInnerText(listItems[i]); tag.InnerHtml += itemTag.ToString(); } return new MvcHtmlString(tag.ToString()); }
2.引用命名空间和调用方法
在引用命名空间的时间可以在当前View中添加,也可以添加到View文件夹里的web.config里面的。注意调用时是@Html.CreateUL(Model)
三、常用的内置html helper
1、TextBox 不解释直接上图
View Code
2、select标签
在select标签之前,认识一个SelectList类,下面给出参数最多的构造方法:
SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue)
第一个参数为一个IEnumerable类型的数据源,第二个参数为可以表示显示字段的值,第三个参数为显示的字段,第四个参数为默认选中的显示文本的值(不是文本)。如果第四个参数为空时
,则是一个为实现值为空的SelectList。我们尽管把这个东西看做是一个含有数据的一个对象。
接着我们来看HtmlHelper的一个扩展方法——DropDownList,下面给出一个较为简单的方法:
//其中name为select标签的name。optionLable为默认显示的一个文本
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, string optionLabel)
{
return htmlHelper.DropDownList(name, null, optionLabel, ((IDictionary<string, object>) null));
}
其调用了DropDownListHelper(htmlHelper, name, selectList, optionLabel, htmlAttributes)方法,最终根据name来获取ViewData里面的数据源,然后构造出了一个Select标签。
下面给出一个例子来演示如何显示一个Select标签(多个对象时使用):
在controller里面定义: ViewBag.PersonSelect = new SelectList(listP,"ID","Name");//表示没有指定选项的。
在View中显示:@Html.DropDownList("PersonSelect", "请选择")
注意:请不要把SelectList的显示值和@Html.DropDownList的显示值弄混了。
下面演示一下只有一个对象时选择自己所属的选项(有一个对象是使用)。
@model HtmlHelperDemo.Models.Person @{ ViewBag.Title = "Index"; } @Html.DropDownListFor(x => x.Gender, new SelectList(new[]{new { Text="男",Value=true},new { Text="女",Value=false}},"Value","Text",Model.Gender))