如果你想讓你的html正確地綁定到你的模型上,你必須注意你渲染的html。我可以用你的HTML看到的問題是
<input type='hidden' value = 'Items.Index' value= 'some_guid' autocomplete = 'off'/>
與這個網站模型綁定將嘗試綁定物品爲模板對象的孩子在那裏找不到任何屬性命名項和這些值將不會被綁定到模型。你有你的隱藏字段更改爲
<input type='hidden' name = 'Categories[category's guid].Items.Index' value = 'some guid' autocomplete = 'off'/>
,你必須只需要調用的UpdateModel在你的操作方法一樣
UpdateModel(yourobject);
我沒有測試此代碼,但我比某些更是改變你的HTML這種方式會讓你排序。 @Mlchael Grassman你不必使用基於整數的id來綁定集合了。請參閱steve's post瞭解更多信息。實際上,你不需要GUID,而是一個隨機數,它是頁面上下文中唯一的數字,只要你使用名稱索引和值設置爲上述隨機數的額外隱藏字段即可。我已經使用(和修改)Steve編寫的BeginCollectionItem方法在asp.net mvc中發表了有關Master詳細信息表單的博客。在這個博客系列的部分one中,我簡單地展示瞭如何在沒有Ajax調用的情況下動態地在客戶端添加您的詳細記錄的字段。在second第一部分中,我將jQuery模板引擎的詳細記錄編輯器模板帶到了客戶端,就像它通過ajax調用呈現時一樣。
這是它!謝謝穆罕默德。令人沮喪的事情之一是用於MVC的公約沒有被公開。你是怎麼弄明白這一切的? :-) – AboutDev 2011-06-05 03:18:09
類別是你的對象的屬性,但項目不是。它的相當屬性的一個元素的類別,所以你必須把它分類[GUID] .Items.index其中GUID粗略地與類別集合中的ID – 2011-06-05 06:35:12