MVC 中 使用TagBuilder扩展HtmlHelper
TagBuilder就是标签建造器,我们就用它来建造属于我们自己标签生成函数。
无废话,直接上代码
例:
using System.Web.Mvc;
public static class HtmlExtensions
{
/// <summary>
/// 自定义一个@html.Submit()
/// </summary>
/// <param name="helper"></param>
/// <param name="value">value属性</param>
/// <returns></returns>
public static MvcHtmlString Submit(this HtmlHelper helper, string value)
{
var builder = new TagBuilder("input");
builder.MergeAttribute("type", "submit");
builder.MergeAttribute("value", value);
return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
}
}
我们来解读一下上面的代码:
- 首先,要用TagBuilder就要引入System.Web.Mvc类库。
- 接着我们看这个函数的参数,this HtmlHelper helper保证这个方法会被添加到HtmlHelper中,string value对应将来的提交按钮显示的文字,也就是value属性。
- var builder = new TagBuilder("input");使我们创建的标签名字设为input。
- MergeAttribute函数给创建出的元素添加属性,如MergeAttribute("type", "submit") 就是加入 type="submit" 属性。
- TagRenderMode.SelfClosing使生成的标签自我关闭,也就是说有<input />这种形式。
- 最后用MvcHtmlString作为返回值是为了使返回值不被转义,比如"<"不会被转成"<"。这是我们不想看到的。
然后我们在View中写入下面代码调用刚才写好的函数:
@Html.Submit("SubmitButton")
生成HTML结果如下:
<input type="submit" value="SubmitButton" />
MVC 中 使用TagBuilder扩展HtmlHelper的更多相关文章
- MVC教程七:扩展HtmlHelper方法
在上一篇文章的最后,列出了一些常见的HtmlHelper的方法,这些都是ASP.NET MVC已经定义好的,如果我们想自己定义一个HtmlHelper方法可以吗?答案是肯定的,那么如何自定义一个Htm ...
- Expression Tree 扩展MVC中的 HtmlHelper 和 UrlHelper
表达式树是LINQ To everything 的基础,同时各种类库的Fluent API也 大量使用了Expression Tree.还记得我在不懂expression tree时,各种眼花缭乱的A ...
- MVC中使用HTML Helper类扩展HTML控件
文章摘自:http://www.cnblogs.com/zhangziqiu/archive/2009/03/18/1415005.html MVC在view页面,经常需要用到很多封装好的HTML控件 ...
- 在 ASP.NET MVC 中创建自定义 HtmlHelper
在ASP.NET MVC应用程序的开发中,我们常碰到类似Html.Label或Html.TextBox这样的代码,它将在网页上产生一个label或input标记.这些HtmlHelper的扩展方法有些 ...
- MVC中HtmlHelper用法大全参考
MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...
- MVC中的HtmlHelper详解
熟悉MVC开发的朋友都应该知道在MVC中,每一个Controller都对应一个View,并且CS文件和对应的ASPX文件也被分离了,更重要的是不再有服务器端控件在工具箱中,不再是代码后至了.MVC中的 ...
- mvc 中关于资源文件的扩展
namespace System.Web.Mvc { /// <summary> /// 扩展HtmlHelper /// </summary> public static c ...
- 本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善(转)
本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善 namespace Web.Mvc.Extensions { #region 验证基类 /// <summary ...
- 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 ...
随机推荐
- [Effective C++ --009]确定对象被使用前已先被初始化
在确保对象在使用前已先被初始化这一条款的编码实践中,作者为我们总结了三条经验,它们分别是: ------------------------------------------------------ ...
- java_Properties写入文件
package ming; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.F ...
- Overview & Change Log
Overview & Change Log Nova Framework is a PHP 5.5+ MVC Framework. It's designed to be lightweigh ...
- RecyclerView基本用法
1. 在gradle.build的dependencies中添加RecyclerView需要的包 compile 'com.android.support:cardview-v7:23.4.0'com ...
- oracle学习总结4
1:三范式a:一张表里必须要有主键,列不可分.b:如果一张表里面,两个字段作为主键,那么其他字段不能够部分依赖这两个字段. 2:pl sql:Procedural language(过程语言) 写一个 ...
- BLOCKED和WAITING的区别
/** * Thread state for a thread blocked waiting for a monitor lock. * A thread in the blocked state ...
- 到目前为止,Linux下最完整的Samba服务器配置攻略
关 于Samba,大家有没有这种感觉,弄了N久丫的死活不喘气儿.找来各种“哥”和“姐”,发现全是“详解…配置专题”,看了半天不知道别个在说什么,好不 容易找了个简单的教程,从头到尾跟着做,尼玛,浪费时 ...
- SSRS集成至Web
分几步进行,第一步要实现:IReportServerCredentials 接口第二步:拖入ReportViewer控件第三步:进行报表传参控制.具体如下图描述....代码部分参考下附件 using ...
- 揭开CSS3媒体查询迷雾(min-width和max-width)
本文参考MichelleKlann的Media Queries Demystified: Min-Width and Max-Width 媒体查询(media queries)是响应式设计(Respo ...
- ViewState原理
1.IsPostBack原理 1.1 所有的服务端控件,都必须放在runat="server"的表单里面,runat="server"的表单会生成__VIEWS ...