程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 使用自定義ViewHelper來簡化Asp.net MVC view的開發 - part1

使用自定義ViewHelper來簡化Asp.net MVC view的開發 - part1

編輯:關於ASP.NET

從開發者的角度來看,創建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") %>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved