对于无效模型,ModelState.IsValid = true

时间:2012-03-07 15:49:15

标签: asp.net-mvc entity-framework validation razor asp.net-mvc-validation

我有添加非常简单的对象的视图:

@Html.ValidationSummary(true)
@using (Html.BeginForm())
{
    <div class="editor-label">
        @Html.LabelFor(tag => tag.Name)
    </div>
    <div class="editor-field">
        @Html.EditorFor(tag => tag.Name)
        @Html.ValidationMessageFor(tag => tag.Name)
    </div>
    <input type="submit" value="Insert" class="submit_btn" />
}

我做了这样的控制器:

if (ModelState.IsValid)
{
    ...
    context.Tags.Add(Tag);
    context.SaveChanges();
    return RedirectToAction("Index");
}
return View(Tag);

模型是从数据库模式生成的(作为edmx的一部分)。字段名称nullable属性设置为false。

在某种程度上,对于空白输入“name”,ModelState.IsValid属性为true,并且它正在尝试保存它(在SaveChanges()上,它会因验证错误而崩溃)。为什么呢?

2 个答案:

答案 0 :(得分:4)

IsValid的{​​{1}}属性与您的实体模型没有任何关系。 ModelState会查看您为模型属性修饰的属性。

例如:

ModelState

这里还要注意,使用数据库实体作为MVC项目的模型可能不是最好的主意。考虑使用映射器将实体映射到模型,反之亦然。

答案 1 :(得分:0)

您必须在部分类中的属性中添加必需属性,只是&#34;不可为空的&#34;不会做的。