[英]ASP.NET MVC, modelstate.isvalid is never valid this way
我有个问你们。 我正在编写一个应用程序,我可以用多个答案创建练习。 我几天前问了一下,现在它完全有效。
Asp.net MVC with Entity,使用jquery将数据传递到List。 不行
来源不再相同了。 我只有一个关于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。 我只有几个表行。 这是为了使用jQuery在我现有的页面中添加新的答案。
我有;
<input type="hidden" id="Answers_@(Model.AnswerId)__Id" class="iHidden" name='Answers[@Model.AnswerId].AnswerId' />
因为它会创建一个带答案的新行。 现在我用它替换了。
@Html.HiddenFor(x=>x.AnswerId, new { @class = "iHidden" })
它现在有效。 不知道为什么,但剃刀做的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.