【问题标题】:Validation in Model-first Entity framework application模型优先实体框架应用程序中的验证
【发布时间】:2013-09-06 07:26:19
【问题描述】:

我正在使用 Razor 开发 ASP.NET MVC4,使用模型优先实体框架连接。我有一个从头开始制作的登录表单,请求用户名、密码和用户类型。不幸的是,即使字段为空,表单也可以发布,这会导致抛出异常。

由于我是通过模型直接映射到我的数据库而不是使用 Models 文件夹中的类,因此我无法应用 DataAnnotations。是否有其他方法可以强制执行表单验证以避免发送空值?

【问题讨论】:

    标签: c# entity-framework asp.net-mvc-4 razor ef-model-first


    【解决方案1】:

    在我看来,您通常所做的事情是错误的,仅依靠客户端验证并不是一个好方法,因为它取决于客户端,在 MVC 中,模型太重要了,为什么不使用它们?顺便说一句,我认为您应该为您的案例使用 ViewModel

    【讨论】:

    • 哦!我之所以这么问,主要是因为我已经使用 Razor 进行了验证。问题是,Razor 不允许我阻止用户发送空值(假设我声明两个字段都为 NOT NULL)。因为这是我无法直接处理的唯一例外,所以我正在寻找更好的解决方案
    • 你需要一个视图模型!
    【解决方案2】:

    由于您不能使用[Required] 属性,您可能希望使用客户端验证。如果您使用的是HTML5,您可以将字段标记为required,您可以制作一个自定义助手来输出如下内容:

    <input id="username" type="text" required />
    

    如此处所示(没有辅助方法):

    http://jsfiddle.net/ck4dL/

    您还可以通过手动使用JavaScript 验证用户输入。

    <input id="username" type="text" />
    <button id="submitx" onclick="validate()">Click</button>
    
    function validate() {
        var username = document.getElementById("username");
        alert(username.value);
        if (username.value === "") {
            alert('Please fill in the username field');
        }
    }
    

    或者使用预构建的库,例如jQuery validate

    作为附加说明,最好也在服务器级别检查这些字段。您的用户可能禁用了 JavaScript,或者可能故意发送格式错误的信息。

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多