我有一个ASP.Net MVC应用程序,其中包含一个包含集合的多层深度模型.
我相信创建对象的视图都是正确设置的,但是当我将表单发布到服务器时,它只是不填充模型中的集合.
我有一个数据,可以在类层次结构中找到:
person.PersonDetails.ContactInformation[0].Data;
Run Code Online (Sandbox Code Playgroud)
此类结构由LinqToSQL创建,ContactInformation是类型EntitySet<ContactData>.要创建视图,我传递以下内容:
return View(person);
Run Code Online (Sandbox Code Playgroud)
在视图中我有一个表单,其中包含一个文本框,其名称与上述字段相关联:
<%= Html.TextBox("person.PersonDetails.ContactInformation[0].Data")%>
Run Code Online (Sandbox Code Playgroud)
我的控制器中的post方法如下:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create (Person person)
{
//Do stuff to validate and add to the database
}
Run Code Online (Sandbox Code Playgroud)
正是在这一点上我迷失了人.PersonDetails.ContactInformation.Count()== 0.因此,ModelBinder创建了一个ContactInformation对象,但没有填充它应该在索引0处保存的对象(即ContactData).
我的问题有两个方面:1.我采取了正确的方法......即这应该有效吗?2.关于为什么它可能无法填充ContactInformation对象的任何想法?
非常感谢,理查德
我正在使用局部视图来创建父子视图.我理想的是父视图上的提交按钮来保存子值.
我有以下型号.
public class Course
{
public int CourseId { get; set; }
public string Name { get; set; }
public int Par { get; set; }
public string Tee { get; set; }
public decimal Rating { get; set; }
public virtual IEnumerable<CourseHole> Holes { get; set; }
public static Course Create()
{
var course = new Course();
course.Par = 72;
var holes = new List<CourseHole>();
for (int i = 0; i < 18; i++)
{
holes.Add(new CourseHole() { …Run Code Online (Sandbox Code Playgroud)