快速业务通道

使用自定义ViewHelper来简化Asp.net MVC view的开发 - part2

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
名称 描述 AddCssClass 加入css的class名称,如果class已经存在,则后来加入的会和原来的class一起生效 MergeAttribute 这个方法用于添加或者更新tag的属性,这个方法有一个接受replaceExisting参数的重载,默 认情况下已经定义的属性不会被重载。 MergeAttributes 同上,只是可以在一个方法内添加或更新所有属性. SetInnerText 设置标签内的文本 ToString 被重载。用于生成相应的html代码,TagRenderMode枚举类型会控制如何生成HTML标签.

在上面表格的ToString那行,TagRenderMode枚举用于控制TagBuilder生成HTML标签的方式, TagRenderModel如下所示:

TagRenderModel 结果示例 Normal <div name=”Sample01”>Some content here</div> StartTag <div name=”Sample01”> EndTag </div> SelfClosing <div name=”Sample01” />    

根据你想创建的HTML标签和你如何使用它,你会发现使用TagRenderModel可以创建出任何你想创建出 的HTML.在前面提到的StartView方法内你会发现TagRenderModel被依据不同的条件设置成 StartTag,Normal和EndTag等不同的的类型.如果你给InnerHTML属性赋值并用StartTag和EndTag生成它你 必须要记住InnerHtml不会被自动生成,你还必须显式的使用InnerHtml属性本身。下面我们来讨论如何创 建HtmlHelper扩展方法。

原文链接:http://mvcviewhelpers.codeplex.com/

ingValue = string.Empty;
   if (this.mValue != null)
   {
     stringValue = Convert.ToString(this.mValue, CultureInfo.CurrentCulture);
   }

   if (this.mReadonly)
   {
     TagBuilder textTag = new TagBuilder("span");
     textTag.AddCssClass("readonly-text");
     textTag.SetInnerText(
       Convert.ToString(this.mValue, CultureInfo.CurrentCulture));
     httpResponse.Write(textTag.ToString(TagRenderMode.Normal));
   }
   else
   {
     // Use MVC helpers to create the actual text box
     httpResponse.Write(RequestContext.HtmlHelper.TextBox(
       Name, this.mValue, Attributes));
   }

   if (this.mCreateLi)
   {
     httpResponse.Write(htmlLiTagBuilder.ToString(TagRenderMode.EndTag));
   }
}
public override void EndView()
{
   // Not needed for this element
}

在StartView方法中有很多值得注意的地方,让我们逐个讨论。首先是我们使用 System.Web.Mvc.TagBuilder来生成HTML, 而不是直接写HTML标签。TagBuilder只能在Asp.net MVC中使用 并且我推荐在生成HTML中必须使用TagBuilder而不是直接写HTML标签,下面是TagBuilder的类图:

下表是TagBuilder中一些方法的说明:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号