ASP中的验证.净MVC

本文关键字:MVC 验证 ASP | 更新日期: 2023-09-27 18:04:26

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

需求是业务不希望强制执行页面级验证。由于页面太长,他们想让用户保存数据,而不是一次填满整个页面。在这15页的最后,在"Review your application"页面上,他们想要在保存的数据上运行所有的验证规则并检查需求。

    MVC验证在这种情况下工作,还是我们必须编写一个可以运行所有规则的自定义库?
  1. 我们可以从IValidatableObject Interface继承模型并调用Model吗?验证"评审"页面上的所有15页?

ASP中的验证.净MVC

当我使用

时,MVC支持多种方式的验证

1-关于在模型上使用数据注释(Per Property)的模型

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

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

4-在If条件/Switch情况下验证在Razor Engine上使用角色

您可以创建一个视图模型列表,然后调用modelstate。是有效的,并处理错误的方式,你将能够在预览页中显示它们。

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

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

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

您还可以实用地将页面的ClientValidationEnabled设置为false。

您甚至可以使用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中使用,它与空文本字段以及自定义验证一起工作,如无效用户等。对于验证方法,您必须自定义代码,上面只是一个提示,但非常有效。