我在当前项目中使用ASP.NET MVC 4
,MS CRM
作为后端。 (因此没有实体框架)。我们有一系列很长的页面(约10-15 ),客户必须填写这些页面作为其应用程序的一部分。保存每个页面后,数据将存储在CRM
中的相应实体中。在他们填写所有15页后,他们提交申请。
要求是企业不想强制执行页面级验证。由于页面太长,他们希望让用户保存数据,而无需一次性填充整个页面。在15页的最后,在"检查您的应用程序"在页面中,他们希望对保存的数据运行所有验证规则并检查是否符合要求。
答案 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,它适用于空文本字段以及自定义验证,如无效用户等等。对于验证方法,您必须自定义代码,上面只是一个提示但非常有效。