Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC中的验证_C#_Asp.net Mvc_Validation - Fatal编程技术网

C# ASP.NET MVC中的验证

C# ASP.NET MVC中的验证,c#,asp.net-mvc,validation,C#,Asp.net Mvc,Validation,我在当前项目中使用ASP.NET MVC 4,以MS CRM作为后端。(因此没有实体框架)。我们有一系列非常长的页面(大约10-15页),客户必须填写这些页面作为其应用程序的一部分。保存每个页面时,数据将存储在CRM中的相应实体中。填写完所有15页后,他们提交申请 要求是业务部门不希望强制执行页面级验证。由于页面太长,他们希望让用户保存数据,而不必一次性填充整个页面。在这15页的末尾,在“查看您的应用程序”页上,他们希望对保存的数据运行所有验证规则,并检查是否符合要求 MVC验证在这种情况下有效

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

要求是业务部门不希望强制执行页面级验证。由于页面太长,他们希望让用户保存数据,而不必一次性填充整个页面。在这15页的末尾,在“查看您的应用程序”页上,他们希望对保存的数据运行所有验证规则,并检查是否符合要求

  • MVC验证在这种情况下有效吗?还是我们必须编写一个可以运行所有规则的自定义库
  • 我们是否可以从IValidatableObject接口中导入模型并调用模型。在“审阅”页面上对所有15页进行验证
    MVC支持我使用的多种验证方法

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

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

    3-在HTML对象(如HTML)上使用Jquery进行验证


    4-使用Razor引擎上的角色和If conditions/Switch case进行验证您可以创建视图模型列表,然后在每个视图模型上调用modelstae.isvalid,并以能够在预览页面中显示的方式处理错误

    然而,这是不必要的复杂,从用户体验的角度来看,这将是次优体验。我将非常仔细地重新考虑对预览页面的要求,在该页面中,所有错误都被聚合并显示

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

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

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

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

        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)
    

    它在MVC4.5中使用,它处理空文本字段以及自定义验证,例如,无效用户等。。对于验证方法,您必须自定义代码,以上只是一个提示,但非常有效。

    您可以使用第一个解决方案,从DB中获取all字段,并在c代码本身中进行验证,这是本例中唯一的解决方案。