2008-11-08 19 views
11

有,爲什麼我應該使用Html.CheckBoxHtml.TextBox等方法,而不只是手動編寫HTML特殊原因?在MVC中使用HtmlHelper有沒有好處?

<%= Html.TextBox("uri") %> 

呈現以下HTML

<input type="text" value="" name="uri" id="uri"/> 

它想它可以節省你比按幾下按鍵,但其他。是否有一個特定的原因,爲什麼我應該儘可能地使用HtmlHelpers,或者它只是一個偏好?

回答

5

有巨大的好處:

它重載方法預先填充值(格式化,和安全的HTML)就像ViewState中。

它允許內置了對MVC的驗證功能的支持。

它可以讓你通過改變呈現(一種「控制器適配器」類型的方法)提供自己的DLL覆蓋渲染。

它導致建立自己的「控制」的概念:http://www.singingeels.com/Articles/Building_Custom_ASPNET_MVC_Controls.aspx

+2

沒有,ViewState是** **不超過有回發(S)保存的文本框的值;這是IPostBackDataHandler(System.Web.UI命名空間,System.Web程序集)的工作。 – 2009-08-14 14:29:19

1

我還沒有做MVC太長,但我已經寫了一些擴展方法,基於Html.ActionLink菜單選項卡。它使我能夠與我的使用保持一致,如果我決定改變我的CSS菜單的工作方式,只修改一個方法來輸出新的標籤格式。

,我已經使他們的另一用途是在使用的ViewData提供數值給控制條件輸出。

2

有一點是一致......我對一個總是忘了名字屬性。另外,您可以擴展自己項目的功能。他們不叫助手都沒有!

2

的好處,使用一個抽象層是未來可插拔的方式校對你的代碼。也許今天,你創建HTML 4頁面,但明天你想創建XHTML頁面或XAML或XUL。如果您只是在任何地方對代碼進行硬編碼,那麼這將會發生很多變化,特別是如果您擁有數百頁的代碼。如果一切都在調用這個庫,那麼你所要做的就是重寫庫。缺點是人們通常認爲它的可讀性稍差。所以,這很可能會增加維護程序員的認知需求。這些優點和缺點與MVC毫無關係。

7

的另一個好處是,如果你的ViewData包含匹配的領域中,將填充的名稱的值。

例如

ViewData["FirstName"] = "Joe Bloggs"; 

<%=Html.TextBox("FirstName") %> 

將呈現

<input type="text" value="Joe Bloggs" id="FirstName" /> 
2

實際上,它自動填充基於第一你ViewData.Model.uri和第二通過計算機[ 「URI」]您的文本框中。做手工你需要做的<input value="<%Html.Encode(ViewData.Model.Uri"%>" />

相關問題