C# ASP.NET MVC,modelstate.isvalid以这种方式永远无效

C# ASP.NET MVC,modelstate.isvalid以这种方式永远无效,c#,asp.net-mvc,entity-framework-5,mvc-editor-templates,C#,Asp.net Mvc,Entity Framework 5,Mvc Editor Templates,我有个问题要问你们。我正在编写一个应用程序,在其中我可以创建多个答案的练习。几天前我问了一些问题,现在它完全起作用了 来源已经不一样了。关于modelstate.isvalid,我只有一个问题 让我给你们举个例子。我有一个带有答案列表的练习模型。使用jQuery和EditorTemplates动态创建新答案非常有效。唯一的问题是,验证现在永远不会起作用。我想将modelstate.isvalid添加到我的httpPost方法中进行验证 问题是关于编辑/创建新答案 public ActionRe

我有个问题要问你们。我正在编写一个应用程序,在其中我可以创建多个答案的练习。几天前我问了一些问题,现在它完全起作用了

来源已经不一样了。关于
modelstate.isvalid
,我只有一个问题

让我给你们举个例子。我有一个带有答案列表的
练习模型。使用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");
}
这是因为我可以创建新答案,同时也可以编辑现有答案并将其添加到我的
练习模型中的答案列表中。因此,当我创建新答案时,我的
练习模型
会发生变化。这就是为什么
modelstate.isvalid
永远不会为真的原因


我怎样才能让它工作

明白了!谢谢你们的回复。很奇怪,但它是有效的。。我已经有了一个隐藏的Id。我有一个只有几行表的部分Id。这是为了使用jQuery将新答案添加到现有页面

我有

    <input type="hidden" id="Answers_@(Model.AnswerId)__Id" class="iHidden"  name='Answers[@Model.AnswerId].AnswerId' />

现在它可以工作了。不知道为什么,但是razor完成了这项工作。

我想验证失败的只是ID?@Mattytomo是的,没错。每当我检查modelstate错误时。它给了我一个信息;“需要回答”。创建新答案时,答案的ID为0。由我的数据库分配ID。在视图中键入@Html.HiddenFor(o=>o.ID)@asawyer,是的,thanx@AlexOvechkin他已经有了(见他的老问题)。
    @Html.HiddenFor(x=>x.AnswerId, new { @class = "iHidden" })