我有一个问题给你们。我正在编写一个应用程序,可以创建带有多个答案的练习。前几天我问了一些问题,现在它完全正常工作。ASP.NET MVC,modelstate.isvalid永远不会有效这种方式
Asp.net MVC with Entity, using jquery to pass data into List. Does not work
源是不一样了。我只有一个关于modelstate.isvalid
的问题。
让我给你们一个例子。我有一个ExerciseModel
与列表答案。使用jQuery和EditorTemplates
创建新的答案完美。唯一的一点是验证现在不会工作。我想将modelstate.isvalid
加入我的httpPost
验证方法中。
的问题是有关编辑/创建新的答案
public ActionResult EditQuestion(int id)
{
ExerciseModel exercisemodel = db.Exercise.Find(id);
if (exercisemodel == null)
{
return HttpNotFound();
}
exercisemodel.Answers = GetAnswers(id);
ViewBag.CourseId = new SelectList(db.Course, "CourseId", "CourseName",
exercisemodel.CourseId);
return View(exercisemodel);
}
[HttpPost]
public ActionResult EditQuestion(ExerciseModel exercisemodel)
{
foreach (var answer in exercisemodel.Answers)
{
db.Entry(answer).State = answer.AnswerId == 0 ?
EntityState.Added :
EntityState.Modified;
}
db.SaveChanges();
return RedirectToAction("Index");
}
这样做的原因,是因为我可以创建新的答案,而我也可以编辑现有的答案,并将其添加到我的答案列表我ExerciseModel
。所以当我创建新的答案时,我的ExerciseModel
发生了变化。这就是为什么modelstate.isvalid
永远不会成真的原因。
我该如何得到这个工作?
我认为这只是ID验证失败? – mattytommo 2013-04-04 12:58:51
@mattytommo是的,正好。每当我检查我的模型状态错误。它给了我信息; “AnswerId是必需的”。当我创建一个新的答案时,答案的ID是0。这取决于我的数据库分配一个ID。 – Ibsonic 2013-04-04 13:02:18
在你的视图中输入@ Html.HiddenFor(o => o.ID) – 2013-04-04 13:03:36