Razor 如何在视图页面中按模型循环并绑定控件中的数据以保存和更新功能?
我有两个模型,如下所示。着眼于问题Razor 如何在视图页面中按模型循环并绑定控件中的数据以保存和更新功能?,razor,Razor,我有两个模型,如下所示。着眼于问题 RelationType:保存“母亲、父亲、小学教师、, 法定监护人……等等。” 家长:保存有关母亲或父亲的个人资料信息 或者小学老师……等等。一个孩子 在关系型模型中 public class RelationType { public int RelationTypeID { get; set; } public string RelationName { get; set; } public vi
public class RelationType
{
public int RelationTypeID { get; set; }
public string RelationName { get; set; }
public virtual ICollection<Parent> Parents { get; set; }
}
在控制器中
public ActionResult Index(int id)
{
ViewBag.Parents = db.ParentRepository.GetAllByRefID(p => p.FamilyID == id).ToList();
ViewBag.RelationTypes = db.RelationTypeRepository.GetAll().ToList();
return View();
}
在我的视图[Index.cshtml]页面中
@model StudentEnrollmentViewModel
@{
ViewBag.Title = "Create / Update Childer’s parents information";
List<Model.Parent> parentsmodel = ViewBag.Parents;
List<Model.RelationType> relationtypes = ViewBag.RelationTypes;
}
<h2>Student Enrollment</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@foreach (var rel in relationtypes)
{
foreach (var itm in parentsmodel)
{
if (rel.RelationTypeID == itm.RelationTypeID)
{
<h2>@rel.RelationName 's Information</h2>
@Html.HiddenFor(model => itm.ParentID, new { Value = itm.ParentID })
<div class="span12">
<div class="span3">
@Html.LabelFor(model => itm.FirstName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.MiddleName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.LastName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.SSN)
</div>
</div>
<div class="span12">
<div class="span3">
@Html.EditorFor(model => itm.FirstName)
@Html.ValidationMessageFor(model => itm.FirstName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.MiddleName)
@Html.ValidationMessageFor(model => itm.MiddleName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.LastName)
@Html.ValidationMessageFor(model => itm.LastName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.SSN)
@Html.ValidationMessageFor(model => itm.SSN)
</div>
</div>
<div class="span12">
<div class="span4">
@Html.LabelFor(model => itm.Email)
</div>
</div>
<div class="span12">
<div class="span4">
@Html.EditorFor(model => itm.Email)
@Html.ValidationMessageFor(model => itm.Email)
</div>
</div>
}
else
{
<h4>@rel.RelationName Information not provided!</h4>
<div class="span12">
<div class="span3">
@Html.LabelFor(model => itm.FirstName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.MiddleName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.LastName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.SSN)
</div>
</div>
<div class="span12">
<div class="span3">
@Html.EditorFor(model => itm.FirstName)
@Html.ValidationMessageFor(model => itm.FirstName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.MiddleName)
@Html.ValidationMessageFor(model => itm.MiddleName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.LastName)
@Html.ValidationMessageFor(model => itm.LastName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.SSN)
@Html.ValidationMessageFor(model => itm.SSN)
</div>
</div>
<div class="span12">
<div class="span4">
@Html.LabelFor(model => itm.Email)
</div>
</div>
<div class="span12">
<div class="span4">
@Html.EditorFor(model => itm.Email)
@Html.ValidationMessageFor(model => itm.Email)
</div>
</div>
}
}
}
}
@model StudentEnrollmentViewModel
@{
ViewBag.Title=“创建/更新孩子的父母信息”;
List parentsmodel=ViewBag.Parents;
List relationtypes=ViewBag.relationtypes;
}
招生
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@foreach(关系类型中的var rel)
{
foreach(parentsmodel中的var itm)
{
if(rel.RelationTypeID==itm.RelationTypeID)
{
@rel.RelationName的信息
@Html.HiddenFor(model=>itm.ParentID,new{Value=itm.ParentID})
@LabelFor(model=>itm.FirstName)
@LabelFor(model=>itm.MiddleName)
@LabelFor(model=>itm.LastName)
@LabelFor(model=>itm.SSN)
@EditorFor(model=>itm.FirstName)
@Html.ValidationMessageFor(model=>itm.FirstName)
@EditorFor(model=>itm.MiddleName)
@Html.ValidationMessageFor(model=>itm.MiddleName)
@EditorFor(model=>itm.LastName)
@Html.ValidationMessageFor(model=>itm.LastName)
@EditorFor(model=>itm.SSN)
@Html.ValidationMessageFor(model=>itm.SSN)
@LabelFor(model=>itm.Email)
@EditorFor(model=>itm.Email)
@Html.ValidationMessageFor(model=>itm.Email)
}
其他的
{
@未提供rel.RelationName信息!
@LabelFor(model=>itm.FirstName)
@LabelFor(model=>itm.MiddleName)
@LabelFor(model=>itm.LastName)
@LabelFor(model=>itm.SSN)
@EditorFor(model=>itm.FirstName)
@Html.ValidationMessageFor(model=>itm.FirstName)
@EditorFor(model=>itm.MiddleName)
@Html.ValidationMessageFor(model=>itm.MiddleName)
@EditorFor(model=>itm.LastName)
@Html.ValidationMessageFor(model=>itm.LastName)
@EditorFor(model=>itm.SSN)
@Html.ValidationMessageFor(model=>itm.SSN)
@LabelFor(model=>itm.Email)
@EditorFor(model=>itm.Email)
@Html.ValidationMessageFor(model=>itm.Email)
}
}
}
}
我的目标是将现有的父母(母亲和父亲等)信息绑定到控件中,然后在修改时将其保存到数据库中。现有的父项信息出现在IF块中,如果父项信息不可用,则必须提供接口以创建新的父项(母亲/父亲/…),该接口将出现在ELSE块中
在上面的代码(视图)中,我无法正确绑定家长信息,应该按照母亲、父亲、小学教师等关系进行分类,如下所示
找到父亲信息强>
姓名:XXXXXX姓氏:XXXXXX中间名:XXXXXX SSN:XXXXXX电子邮件:XXXXXX@xyz.com
未找到母亲信息!![请在下面提供]
姓名:\uuu姓氏:\uu中间名:\uSSN:\u电子邮件:\u
找到小学教师信息强>
姓名:XXXXXX姓氏:XXXXXX中间名:XXXXXX SSN:XXXXXX电子邮件:XXXXXX@xyz.com
找不到合法监护人信息!![请在下面提供]@model StudentEnrollmentViewModel
@{
ViewBag.Title = "Create / Update Childer’s parents information";
List<Model.Parent> parentsmodel = ViewBag.Parents;
List<Model.RelationType> relationtypes = ViewBag.RelationTypes;
}
<h2>Student Enrollment</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@foreach (var rel in relationtypes)
{
foreach (var itm in parentsmodel)
{
if (rel.RelationTypeID == itm.RelationTypeID)
{
<h2>@rel.RelationName 's Information</h2>
@Html.HiddenFor(model => itm.ParentID, new { Value = itm.ParentID })
<div class="span12">
<div class="span3">
@Html.LabelFor(model => itm.FirstName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.MiddleName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.LastName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.SSN)
</div>
</div>
<div class="span12">
<div class="span3">
@Html.EditorFor(model => itm.FirstName)
@Html.ValidationMessageFor(model => itm.FirstName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.MiddleName)
@Html.ValidationMessageFor(model => itm.MiddleName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.LastName)
@Html.ValidationMessageFor(model => itm.LastName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.SSN)
@Html.ValidationMessageFor(model => itm.SSN)
</div>
</div>
<div class="span12">
<div class="span4">
@Html.LabelFor(model => itm.Email)
</div>
</div>
<div class="span12">
<div class="span4">
@Html.EditorFor(model => itm.Email)
@Html.ValidationMessageFor(model => itm.Email)
</div>
</div>
}
else
{
<h4>@rel.RelationName Information not provided!</h4>
<div class="span12">
<div class="span3">
@Html.LabelFor(model => itm.FirstName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.MiddleName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.LastName)
</div>
<div class="span3">
@Html.LabelFor(model => itm.SSN)
</div>
</div>
<div class="span12">
<div class="span3">
@Html.EditorFor(model => itm.FirstName)
@Html.ValidationMessageFor(model => itm.FirstName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.MiddleName)
@Html.ValidationMessageFor(model => itm.MiddleName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.LastName)
@Html.ValidationMessageFor(model => itm.LastName)
</div>
<div class="span3">
@Html.EditorFor(model => itm.SSN)
@Html.ValidationMessageFor(model => itm.SSN)
</div>
</div>
<div class="span12">
<div class="span4">
@Html.LabelFor(model => itm.Email)
</div>
</div>
<div class="span12">
<div class="span4">
@Html.EditorFor(model => itm.Email)
@Html.ValidationMessageFor(model => itm.Email)
</div>
</div>
}
}
}
}