【问题标题】:ASP.NET MVC - How to handle a string in a model that does not allow nulls?ASP.NET MVC - 如何处理不允许空值的模型中的字符串?
【发布时间】:2014-06-20 13:21:16
【问题描述】:

所以我对 ASP.NET 和 MVC 有点陌生。我有一个使用 Entity Framework 6 的 ASP.NET MVC5 应用程序。我从 SQL Server 数据库生成了我的模型,到目前为止,我只使用 vanilla index/create/details/edit 构造。

在我的模型中,各个字段都标记为“允许 Nulls”,而其他字段则没有。在创建新条目时,ModelState.IsValid 检查和@Html.ValidationMessageFor 消息可以很好地处理任何类型,例如保留为 null 的 int。

然而,在一次入学测试中,我收到了DbEntityValidationException。我使用 this question 中的 try/catch 来发现它是留空的字符串 (VARCHAR) 字段之一。

我假设这是因为字符串类允许空值,而 int 不允许(除非在模型中声明为 Nullable<type>),因此控制器/模型不会将其标记为无效。

处理此问题的最简单方法是什么?有没有办法装饰模型中的字符串属性以便它也被检查?或者我是否需要尝试保存、捕获异常和手动处理验证消息?

谢谢

【问题讨论】:

    标签: asp.net entity-framework asp.net-mvc-5 .net-4.5


    【解决方案1】:

    可以使用Required-attribute 来装饰您的财产。当此属性为空时,当用户发布表单时,Mvc 将显示错误消息。

    public class TestClassModel
    {
        [Required]
        public string RequiredString { get; set; }
    }
    

    【讨论】:

    • 感谢您的快速回复和简单的回答!
    • 如果RequiredString 为空怎么办?
    • 那么ModelState会报错,如果开启验证,页面上的表单就不会提交了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2017-06-29
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多