我正在制作我的MVC应用程序。一种观点包括表格。在填充之后,表单被验证,如果模型有效,那么它应该移动到另一个窗口,但如果没有,则不会发生任何事情,但显然,某些数据会丢失。我的控制器:
public ActionResult PickGroupForHomework(PickGroupForHomeworkViewModel model)
{
ClassDeclarationsDBEntities2 entities = new ClassDeclarationsDBEntities2();
model.groups = entities.Groups.ToList();
model.users = entities.Users.ToList();
int id = model.subject_id;
var subj = entities.Subjects
.Where(b => b.class_id == id)
.FirstOrDefault();
model.subject_name = subj.name;
if (ModelState.IsValid)
{
}
else
{
if (subj != null)
{
model.subject_name = subj.name;
}
model.subject_id = model.subject_id;
model.groups = entities.Groups.ToList();
model.users = entities.Users.ToList();
return View(model);
}
return View(model);
}
显然,subject_id
和qty
在错误验证后为空。为什么呢?
答案 0 :(得分:2)
您是否在视图中,从模型绑定到Subject_Id属性的字段或隐藏字段?如果您在强类型视图中至少没有从模型绑定属性的隐藏字段,则当您的用户发布表单并调用控制器时,此数据将会丢失。
@Html.HiddenFor(m => m.Subject_Id)