2012-01-09 65 views
2

什麼是最乾淨的,大多數ASP.NET MVC3方式,由於缺乏更好的術語,無法爲有限數量的集合建模並顯示Web表單剃刀?ASP.NET MVC3 EditorFor用於具有固定長度數組的模型的表單

我知道我可以在模型中拋出一個List並在視圖中遍歷它,但那不會以任何方式自動告訴EditorFor呈現有限數量的文本框或任何它是我想要的。

是否有更多的自動方法來建立一個視圖模型,與剃刀視圖一起工作,以確切地告訴我在我的集​​閤中有多少物品,因此它可以自動渲染正確數量的表單元素?

+0

你不喜歡'foreach'語法嗎? – Rondel 2012-01-09 16:25:16

+0

我喜歡它,如果沒有更好的方法,那就是我將要使用的。我的問題是,使用EditorFor,有沒有更多的自動方式來連接模型的屬性是一個固定長度的數組或有限數量的集合,使得視圖會自動顯示正確數量的表單元素。所以在我的情況下,我需要準確地通過5個文本框收集5個薪水...... – tnktnk 2012-01-09 16:27:52

回答

1

如果我們談論的是少量的簡單數據類型,那麼事實上(儘管不是最想聽到的答案)是您應該在模型中爲項目的每個實例都有單個字段。因此,對於5個工資,您的模型中應該有salary1,salary2等。

如果你想抽象一點 - 以及使它更難以改變/處理更大的數字等,你可以附加一些自定義元數據到字段,指出你想要的值的數量。然後,您需要幫助程序或自定義模板(或組合)來獲取元數據並呈現正確數量的輸入字段(使用正確的名稱,ID等)。

+0

這就是我最初做的,薪水1,薪水2等,但它只是感覺笨重的不是嗎?每個人都需要完全相同的驗證邏輯,而且我需要將他們驗證爲值集合,也就是說,您必須輸入全部五個值。隨着所有其他嘗試將模型綁定自動化到一個視圖,我很驚訝這種情況被忽略... – tnktnk 2012-01-09 16:38:33

1

使用列表作爲視圖的模型是推薦的方法。它簡單,乾淨,高效。

您可以創建EditorFor呈現列表的模板,但它們基本上與視圖相同,並且由於模板系統而增加了一些開銷。

+0

在您的觀點中,將List計數限制爲有限數量的項目的最佳方法是什麼? – tnktnk 2012-01-09 16:32:16

+0

我不確定我瞭解你的問題。你想從控制器傳遞的34個元素中的10個元素或類似的東西? – linkerro 2012-01-10 08:01:12

1

我真的不明白你的問題是什麼。爲什麼你需要限制它?你只需在列表中放入很多記錄,這就是它會渲染多少個記錄。如果您只需要列表中的5條記錄,您是否會盡力確保列表只包含5個元素?不,你的觀點同樣如此。

+0

問題是,是否有更多的自動化方法來建模和連線。我不會告訴那些爲我的應用程序編寫規格的人,因爲沒有理由將其數量限制爲五個。有一個很好的理由。你不知道這個Web表單的目的是什麼,你不需要知道。如果答案是沒有更多的自動化方式,那很好,說,我會接受它。 – tnktnk 2012-01-09 16:45:15