ASP.NET MVC中的验证

时间:2014-05-20 12:27:28

标签: c# asp.net-mvc validation

我在当前项目中使用ASP.NET MVC 4MS CRM作为后端。 (因此没有实体框架)。我们有一系列很长的页面(约10-15 ),客户必须填写这些页面作为其应用程序的一部分。保存每个页面后,数据将存储在CRM中的相应实体中。在他们填写所有15页后,他们提交申请。

要求是企业不想强制执行页面级验证。由于页面太长,他们希望让用户保存数据,而无需一次性填充整个页面。在15页的最后,在"检查您的应用程序"在页面中,他们希望对保存的数据运行所有验证规则并检查是否符合要求。

  1. MVC验证是否适用于此方案,或者我们是否必须编写可以运行所有规则的自定义库?
  2. 我们可以从IValidatableObject接口继承模型,并在" Review"上的所有15个页面上调用Model.Validate。页?

4 个答案:

答案 0 :(得分:0)

使用

时,MVC支持验证的方式不止一种

1-在模型上使用模型上的数据注释(每个属性)

2-在控制器上代表您的视图,在当前控制器上添加数据注释

3-在HTML对象上使用Jquery验证,如HTML

4-使用Razor Engine上的角色验证If条件/切换案例

答案 1 :(得分:0)

您可以创建视图模型列表,然后在每个模型上调用modelsta.isvalid,并以能够在预览页面中显示它们的方式处理错误。

然而,这是不必要的复杂,从用户体验的角度来看,这将是一次次优的体验。我会非常仔细地重新考虑预览页面的要求,其中汇总和显示所有错误。

答案 2 :(得分:0)

是的,这是可能的。 您可以在“全局”页面中启用和禁用整个应用程序的验证。

<configuration>
  <appSettings>  
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
</configuration>

您还可以实际为您的网页设置ClientValidationEnabled为false。

答案 3 :(得分:0)

你甚至可以使用formData验证,它在实时环境中使用,它是非常有用的,它可以应用于每个必需的字段控件,给出示例代码看看

    if (string.IsNullOrWhiteSpace(Convert.ToString(postedFormData["UserName"])))
        {
            LoginViewModel.ReturnMessage.Clear();
            LoginViewModel.ReturnMessage.Add("Enter Username");
            LoginViewModel.ReturnStatus = false;
        }
     else if (string.IsNullOrWhiteSpace(Convert.ToString(postedFormData["Password"])))
        {
            LoginViewModel.ReturnMessage.Clear();
            LoginViewModel.ReturnMessage.Add("Enter Password");
            LoginViewModel.ReturnStatus = false;
        }

当您在方法中传递用户名和密码时,请以这种方式调用

  LoginViewModel = LoginApplicationService.ValidateLogIn(LoginViewModel.LoginDataModel.UserName, LoginViewModel.LoginDataModel.Password)

用于MVC 4.5,它适用于空文本字段以及自定义验证,如无效用户等等。对于验证方法,您必须自定义代码,上面只是一个提示但非常有效。