使用自定义ViewHelper来简化Asp.net MVC view的开发 - part2
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中一些方法的说明: 名称 描述 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/ |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |