快速业务通道

使用自定义ViewHelper来简化Asp.net MVC view的开发 - part5(完)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

接上文..前面我们已经创建好了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的开发的。

这篇文章中附带的示例代码时全功能版本,每一个页面都有两个版本-使用view helper和不使用view helper.不适用view helper的版本全部手动创建HTML,而使用view helper的版本包括了我们先前创建的3 个view helper,让我们来进行简单的比较,从源码中找到AddContactClassic.aspx

<%@ Page Title="" Language="C#"  MasterPageFile="~/Views/Shared/Site.Master"
  Inherits="System.Web.Mvc.ViewPage<Sedodream.Web.ViewHelper.Models.AddContactModel>"
%>

<%@ Import Namespace="Sedodream.Web.Common.Contact" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
  Add Contact Classic
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
  <h2>Add Contact Classic</h2>
  <%= Html.ValidationSummary("Errors exist") %>

  <ol>   <li>
    <span class="success-message"><%= ViewData["SuccessMessage"]% ></span>
    </li>
  </ol>
  <% using (Html.BeginForm())
    { %>
    <fieldset>
     <legend>Account Information</legend>
     <ol>
      <li>
       <label for="FirstName">First name</label>
       <%= Html.TextBox

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号