您的位置:首页 > 编程语言 > ASP

ASP.NET MVC 之自定义HtmlHelper

2016-04-06 14:14 686 查看

前言

HtmlHelper方法为我们提供很多html标签,只需在页面调用就行了,但是微软并没有把所有的html标签都对应有了扩展方法,需要我们重新自定义HtmlHelper,来满足我们需要。

方法

如下例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace TestMvcHelper
{
public static class HtmlExtensions
{
public static MvcHtmlString Submit(this HtmlHelper helper, string value)
{
var builder = new TagBuilder("input"); //使我们创建的标签名字设为input
builder.MergeAttribute("type", "submit");  //添加属性 type="submit"
builder.MergeAttribute("value", value);
return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
}
}
}


上面代码解读:

在使用TagBuilder需要引入命名空间System.Web.Mvc。

Submit方法名是对应视图中调用的名称。 (如:@Html.Submit("提交") )

this HtmlHelper helper 将Submit方法添加到HtmlHelper中,value是传过来的提交按钮上的文字。

var builder = new TagBuilder("input"); 设置标签名字设为input。

builder.MergeAttribute("type", "submit") 设置标签属性type="submit"。

builder.MergeAttribute("value", value); 设置标签提交按钮Value值。

TagRenderMode.SelfClosing 表示用于呈现自结束标记(例如,<input />)的模式。

TagRenderMode是个枚举类,分别为 Normal(表示用于呈现正常文本的模式)、StartTag(表示用于呈现开始标记(例如,<tag>)的模式)、 EndTag(表示用于呈现结束标记(例如,</tag>)的模式)、 SelfClosing(表示用于呈现自结束标记(例如,<tag />)的模式)。

MvcHtmlString作为返回值是为了使返回值不被转义,比如"<"不会被转成"<"。

View中写入下面代码调用

@Html.Submit("提交")


生成效果预览

<input type="submit" value="提交" />


本篇到此结束。HtmlHelper包含的东西比较多,还有一些东西没有介绍,有时间我会继续学习,如果大家有兴趣我可以继续拓展。欢迎讨论。喜欢的话就推荐一下吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: