我有一個問題給你們。我正在編寫一個應用程序,可以創建帶有多個答案的練習。前幾天我問了一些問題,現在它完全正常工作。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