2012-10-19 29 views
0

我有一組包含輸入元素的HTML頁面。我正在將它們轉換爲MVC Views閱讀表格發表數據與強類型查看

考慮性能&的代碼的整潔。什麼是進行正確的方法,

  1. 處理形式發佈的FormCollection,或

  2. 創建強類型視圖從模型中獲得的輸入值。

回答

1

一個使用HTML助手是它能夠更好的編譯時間你的看法檢查(允許你在構建時而不是在運行時查找錯誤),並且在Visual Studio中編輯視圖模板時還支持更豐富的智能感知。

另一個優點可能是HTML輔助允許您設置的HTML標記的任何自定義屬性。您可以通過傳遞字典或使用匿名類型(如下)來使用助手來完成此操作。

@Html.TextArea("FirstName", Model.FirstName, new { parameter = "value" }); 

Source 1

Source 2

+0

嗨Emre,它幫助感謝。 – Abhijeet

1

可以使用TextBoxFor的重載設置/覆蓋輸入元素的屬性:

優勢
@Html.TextBoxFor(m => m.Name, new { @Value = "0", readonly="readonly" @class="cssClass"}) 
+0

邁克您好,感謝有沒有在所有的輸入元素轉換爲相應的MVC項目的任何顯著的優勢(性能)。爲什麼不應該使用formCollection進行簡單的表單處理? – Abhijeet

+0

如果您只是從Request.Form中檢索操作中的值,則MVC將跳過昂貴的反射來將表單元素綁定到模型。但你沒有得到很好的模型綁定驗證和可測性 –

1

其實,這是一個很好的question..I不知道是誰投了下去......還有在我看來,太多嚴格的視圖模型的傳道者。

在與MVC合作一段時間後,我的觀點是,對於非常簡單的事情來說,@Html助手很好地工作......但是他們導致了一種思考網頁/服務器交互的方式,長期限制它特別是對於更復雜的用途。它可以讓你在很大程度上依賴不引人注目的驗證,而不必瞭解驗證如何在客戶端上運行。這對介紹性程序員來說很好......因爲我曾經......但是至少不了解jQuery驗證庫會最終阻礙你。做任何認真的網絡/網絡應用程序開發,其中驗證比檢查是否需要值更復雜,變得更加粗糙。另外,如果你更新它們(我遇到了這個問題),你依靠微軟保持它們的驗證庫與jquery驗證庫保持同步。

另外,你需要考慮,如果任何前端庫使用的是什麼,如果其中任何一個不與這些助手的輸出(自舉一個很明顯的一個)很好地工作。這就是說,表單集合更快,更少限制...使用它和純驗證庫將更容易和更具表現力......讓你寫任何你想要的代碼。畢竟..如果在服務器端編寫if(!String.IsNullorEmpty()),或者除了客戶端需要任何類型的驗證外,其實很難。

+0

好點....! – Abhijeet