【问题标题】:ModelState.IsValid = true for not valid modelModelState.IsValid = true 表示无效模型
【发布时间】:2012-03-07 15:49:15
【问题描述】:

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

@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 的一部分)。字段名称可为空的属性设置为 false。

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

【问题讨论】:

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


    【解决方案1】:

    ModelStateIsValid 属性与您的实体模型没有任何关系。 ModelState 查看您用来装饰模型属性的属性。

    例如:

    public class Tag {
    
        [Required]
        public string Name { get; set; }
    }
    

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

    【讨论】:

      【解决方案2】:

      您必须在部分类中的属性中添加 必需属性,只是“不可为空”是不行的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-28
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        • 1970-01-01
        • 2014-08-06
        • 1970-01-01
        相关资源
        最近更新 更多