使用自定义ViewHelper来简化Asp.net MVC view的开发 - part1
从开发者的角度来看,创建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:
我就想,是不是能有一种方法来将上面的所有代码融合在一起呢。这样不仅让我编程更加轻松,而且 再也不用担心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") %> 而还有一种用法和声明一个form元素很相似:
上面两种方法的主要区别是Html.TextBox仅仅返回一个string来注入到view中。这也是为什么使用 <%=而不是标准的的代码块。而另一种以对象作为返回类型的方法更老练许多,比如, System.Web.Mvc.Html.MvcForm,这个对象放入using语句.对象被创建时一些HTML就会被注入到view中(严 格说:并不是对象创建时,但很接近)还有一些事在对象被回收时将 html注入view(也就是碰到”}”符号 时).使用这种方法的好处是可以在usin |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |