我有添加非常简单的对象的视图:
@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()上,它会因验证错误而崩溃)。为什么呢?
答案 0 :(得分:4)
IsValid
的{{1}}属性与您的实体模型没有任何关系。 ModelState
会查看您为模型属性修饰的属性。
例如:
ModelState
这里还要注意,使用数据库实体作为MVC项目的模型可能不是最好的主意。考虑使用映射器将实体映射到模型,反之亦然。
答案 1 :(得分:0)
您必须在部分类中的属性中添加必需属性,只是&#34;不可为空的&#34;不会做的。