首页 / 网页编程 / ASP.NET / 使用自定义ViewHelper来简化Asp.net MVC view的开发 - part1
        
            使用自定义ViewHelper来简化Asp.net MVC view的开发 - part12011-08-06 博客园 译:CareySon从开发者的角度来看,创建Asp.net MVC的View是一件很爽的事,因为你可以精确控制最终生成的HTML 。具有讽刺意味的是不得不写出每一行HTML代码同时也是Asp.net MVC的View中让人不爽的地方。让我用 我的一个经历来告诉我创建ASP.Net MVC view Helpers背后灵感的由来。由一小部分开发人员(包括我) 和一个CSS设计人员(我们叫他Ricky)组成的小组,开始了一个新的Asp.net MVC的项目,在项目开发过程 中;我给页面添加了一些TextBox和一些其他元素,我check-in了我的代码,直到回家我也没再想起过这 事。隔夜早晨,刚上班时我就从CSS设计那里收到一封邮件来通知我我必须按照他的CSS指导方针来写HTML ,比如说对于textbox,必须遵循以下规则:每个textbox必须内嵌在li标签中每一个textbox都必须有一个label标签的for属性与之对应textbox必须使用input标签并设置type属性为text对于这些要求我一一照做并修改我的代码符合了后两条规则,但我忘了关于li的指导方针,我很快更新 了页面并提交了我的代码。几天后,项目又推进了很多,Ricky来到我的办公桌前并让我看看我所做的改 变。打开页面,他开始一一列举那些我不遵循它的UI规定的地方,有很多地方我都忽视了因为我甚至不知 道这些指导方针的存在.在他指出这些后,我想:一定会有方法可以让我们两个人都如愿以偿.对于我来说 只是需要html标签的id,对于Ricky来说他需要我的HTML符合规范来让他的CSS文件能够选择到合适的html 。所以我们引入了view helper.在我用Asp.net MVC时我注意到我自己写了很多纯Html,比如div和span,同时伴随使用了很多 System.Web.Mvc.HtmlHelper来生成html,比如说一个输入名字的textbox:<li>
   <label for="FirstName">First name</label>
   <%= Html.TextBox("FirstName") %>
   <%= Html.ValidationMessage("FirstName", "*") %>
</li>我就想,是不是能有一种方法来将上面的所有代码融合在一起呢。这样不仅让我编程更加轻松,而且 再也不用担心Ricky给我设置的条条框框了。理想的情况下会满足以下标准:容易执行重用性好强制执行某些标准(比如Ricky的)和标准的HtmlHelper扩展方法用起来没太大区别容易使用在我们进入执行这个的细节之前如果你感觉这听起来像又回到了Web Form时代,那就错了。view helper仅仅是在创建HTML的时候起辅助作用,而不是将HTML进行抽象。我关心的只是HTML在页面中的显示 效果以及使用javascript的行为更轻松.而不是textbox是否放入li中,当我需要创建一个textbox时,我只 需在view中放入如下代码:<% Html.NewText("FirstName", "First name"); %>我想声明我仅仅是想将创建HTML延迟到另一个类中。使用View helper我可以轻松做到这一点。首先我 们先来看标准的HtmlHelper扩展方法如何做到这一点.Html helper有两种实现用法,大多数的使用方法都会如下:<%= Html.TextBox("FirstName") %>