Welcome 微信登录

首页 / 网页编程 / ASP.NET / 使用自定义ViewHelper来简化Asp.net MVC view的开发 - part5(完)

使用自定义ViewHelper来简化Asp.net MVC view的开发 - part5(完)2011-08-06 博客园 译:CareySon接上文..前面我们已经创建好了HtmlFieldSet,现在,为了让HtmlHelper的扩展方法可以使用这个类 ,还需要创建一个方法:NewHtmlFieldSet

public static IViewObject NewHtmlFieldSet(
this HtmlHelper htmlhelper, string name, string title, object attributes)
{
IViewObject viewObject = new HtmlFieldSet(
new ViewRequestContext(htmlhelper), name, title, attributes);
viewObject.StartView();
return viewObject;
}

这个方法的实现和前面所提到的那些没有上面不同,都是传入相应参数并返回view object,在View被 初始化时返回这个对象,View首先在初始化时使用返回的View object,更确切点说,返回的IViewObject 会在using语句中被view使用,例子如下:

<% using (Html.NewHtmlFieldset("FieldsetName", "My Fieldset", null))
{ %>
<li>
<label for="FirstName">FirstName</label>
<span id="FirstName"><%= Html.Encode(Model.FirstName) %></span>
</li>
<% } %>

对应生成的HTML代码如下:

<fieldset name="FieldsetName">
<legend>My Fieldset</legend>
<ol>
<li>
<label for="FirstName">FirstName</label>
<span id="FirstName">Sayed</span>
</li>
</ol>
</fieldset>

EndView方法输出了最后的三个结尾标签(</li>,</ol>,</fieldset>),达到了 我们的预期,现在就可以使用view helper来创建fieldset以及包含在内的legend,以便达到更好的可理解 和可维护性。下面来看view helper是如何简化view的开发的。