接上文..前面我們已經創建好了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的開發的。