一、返回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))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!