我有一個ASP.Net MVC應用程序與一個模型是幾層深含有一個集合。ASP.Net MVC - 模型與收集不填充回發
我相信創建對象的視圖都是正確設置的,但是當我將表單發佈到服務器時,它並沒有在模型中填充集合。
我有一塊數據中的哪一個在類層次結構從而發現:
person.PersonDetails.ContactInformation[0].Data;
此類結構由LinqToSQL創建,並且是ContactInformation EntitySet<ContactData>
類型。爲了創建我通過下面的視圖:
return View(person);
和視圖內我有一個包含一個文本框相關聯於上述字段的名稱的形式:
<%= Html.TextBox("person.PersonDetails.ContactInformation[0].Data")%>
POST方法在我的控制器就如下:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create (Person person)
{
//Do stuff to validate and add to the database
}
正是在這一點上,我擔心迷路person.PersonDetails.ContactInformation.Count()== 0。所以ModelBinder已經創建了一個ContactInformation對象,但沒有用它應該容納的對象(即ContactData)填充索引0.
我的問題是兩倍: 1.我是否採取了正確的方法..即應該這項工作? 2.關於爲什麼它可能無法填充ContactInformation對象的任何想法?
非常感謝, 理查德
謝謝,完美的作品。我已經嘗試過一個更深層次的例子,它可以很好地工作,但你可能是正確的,它正在複雜性中迷失。爲了清晰起見,兩條評論: 1.我只需要[Bind(Prefix =「Person.PersonDetails.ContactInformation」)] ContactInformation [] info)和模型對象的相應設置。 2. ContactInformation []需要爲EntitySet以對應正確的類型。 現在查找一些前綴的更多細節.... 感謝您的幫助。 Richard –
Richbits
2009-05-20 13:06:01