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验证在这种情况下工作,还是我们必须编写一个可以运行所有规则的自定义库?
- 我们可以从IValidatableObject Interface继承模型并调用Model吗?验证"评审"页面上的所有15页?
当我使用
时,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中使用,它与空文本字段以及自定义验证一起工作,如无效用户等。对于验证方法,您必须自定义代码,上面只是一个提示,但非常有效。