我有一个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