2011-04-22 41 views
21

我的ViewModel有一個屬性是我的另一個模型實體的集合,在這裏是CategoryTags(每個標籤都有一個標籤和一個ID)。EditorFor我的模型中的項目集合

1)我正確理解Html.EditorFor()沒有可以爲ICollection創建的UI嗎?

2)假設#1,我決定創建一個EditorTemplate,它是一個文本框,我的用戶可以鍵入逗號分隔的標籤名稱,jquery將自動完成。是否必須傳回標記名稱列表(或其各自的ID),然後在POST上將它們解析回CategoryTags屬性中?

謝謝!

回答

19
  1. 正確的 - 你需要自己的模板(參見http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3
  2. 是的,這可以工作 - 模型綁定會正確填充,如果它們被命名爲正確的事情ID [0],等上看到菲爾哈克的文章這個:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

編輯爲#2 - 我讀了你原來的文章有點不正確。如果將它們全部放入單個文本框中,則需要解析它們(或創建自己的模型綁定器)。您可以有一個編輯器爲每個項目添加新的文本框到DOM,然後模型綁定器將正確地重新填充列表。然而,在你提到的情況下,你的選擇是手動在服務器上執行此操作,或者使用你自己的模型綁定器(在這裏很容易)將它們拆分成模型。或者:)

+0

謝謝亞當。這聽起來像你描述的方法,爲每個選擇的項目添加一個新的tb到DOM,是「正確」的方式來做到這一點。也許我會複製stackoverflow方法,其中標籤在輸入框 – 2011-04-22 16:42:59

+1

下方累積附錄:從jarrettmeyer鏈接的帖子非常棒。 – 2011-04-22 16:44:35

+1

僅供參考,第一個鏈接被打破。以下是Google的緩存:http://webcache.googleusercontent.com/search?q=cache:4aHKKPnyI_kJ:jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3+&cd=1&hl= en&ct = clnk&gl = us – 2012-04-19 16:56:42