Asp.net mvc 在循环ParialView中引用列表
我一直在尝试循环局部视图,它们与主视图共享相同的模型。基本上,这个想法是,有一个注册页面,家长可以注册多个孩子,孩子信息在部分视图中,这样我就可以在主视图中添加多个实例 我可以多次显示局部视图,但它只保存第一个学生。如果我替换部分视图@Html.partial。。。如果在主视图中使用@Html.EditorForf=>f.student[i].Person.FirstName,则效果良好,我可以添加多个文本框并保存多个学生 如何使用局部视图并能够传入ParentModel并正确引用它 希望这一切都有意义。。。感谢您的帮助。谢谢 型号:Asp.net mvc 在循环ParialView中引用列表,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我一直在尝试循环局部视图,它们与主视图共享相同的模型。基本上,这个想法是,有一个注册页面,家长可以注册多个孩子,孩子信息在部分视图中,这样我就可以在主视图中添加多个实例 我可以多次显示局部视图,但它只保存第一个学生。如果我替换部分视图@Html.partial。。。如果在主视图中使用@Html.EditorForf=>f.student[i].Person.FirstName,则效果良好,我可以添加多个文本框并保存多个学生 如何使用局部视图并能够传入ParentModel并正确引用它 希望这一切
public partial class Person()
{
public string FirstName { get; set; }
}
public partial class Student
{
public int Student_PersonID { get; set; }
public int Father_PersonID { get; set; }
public virtual Person Father { get; set; }
public virtual Person Person { get; set; }
}
public class ParentModel
{
public List<Student> student { get; set; }
}
主视图
@model WebPortal.Models.ParentModel
<div>
@for (int i = 0; i < cnt; i++)
{
@Html.Partial("_StudentPartial", Model, new ViewDataDictionary { { "loopIndex", i.ToString() } });
}
</div>
<div>
@Html.EditorFor(f => f.student[0].Father.FirstName)
</div>
部分视图\u StudentPartial
@model WebPortal.Models.ParentModel
@{
int i = Convert.ToInt32(ViewData["loopIndex"].ToString());
}
@using (Html.BeginForm())
{
<div class="editor-field">
@Html.EditorFor(m => m.student[i].Person.FirstName)
</div>
}
控制器
public ActionResult Register(ParentModel pm)
{
using (var db = new SMEntities())
{
for (int i = 0; i < pm.student.Count; i++)
{
if (i != 0)
{
pm.student[i].Father = pm.student[0].Father;
}
db.Students.Add(pm.student[i]);
}
db.SaveChanges();
}
}
更好的组织方式如下: 像这样为学生键入_StudentPartial视图-
@model WebPortal.Models.Student
@using (Html.BeginForm())
{
<div class="editor-field">
@Html.EditorFor(m => m.Person.FirstName)
</div>
}
然后像这样对主视图建模:
@model WebPortal.Models.ParentModel
<div>
@for (int i = 0; i < cnt; i++)
{
@Html.Partial("_StudentPartial", Model.student[i]);
}
</div>
<div>
@Html.EditorFor(f => f.student[0].Father.FirstName)
</div>
尝试将此作为指导原则:仅向视图提供它所需的信息,而不是更多信息。这样做会导致null exception errorObject reference未设置为对象实例。在主视图中,Model.student[i]为空。。。