我正在开发一个包含大约90种不同形式的复杂应用程序(是的,真棒)。如何根据一些要求进行复杂的现场验证:
1)字段要求基于用户登录(角色) 2)如果其他数据字段的回答不同(动态),则字段要求会发生变化
如何使用EF5 POCO在MVC4中完成?
我目前为必填字段创建了数据注释,如下所示:
我的EF5 POCO模型:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
[MetadataType(typeof(User_Validation))]
public partial class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
}
ValidationModels.cs文件位于我的EF5 POCO :
public class User_Validation
{
public int UserID { get; set; }
[Required(ErrorMessage = "The UserName is required")]
public string UserName { get; set; }
[Required(ErrorMessage = "The FirstName is required")]
public string FirstName { get; set; }
[Required(ErrorMessage = "The LastName is required")]
[Display(Name="Last Name")]
public string LastName { get; set; }
[Required(ErrorMessage = "The Password is required")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required(ErrorMessage = "The Email is required")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
}
这很好用,但我怎样才能使我的验证变得动态?
谢谢!
答案 0 :(得分:1)
您是否需要管理员为响应设置动态要求,或者从一开始它们是否相当静态?
如果我是你,我会为每个触发的响应创建不同的操作方法。这将允许您将表单指定为部分视图,并根据输入逻辑进行渲染。
如果您需要自定义字段验证,建议您编写自己的数据验证框架。您可以从ActionFilterAttribute继承,它允许您在每个操作请求/响应周期之前和之后添加自定义验证。在这里查看一些信息Custom Filters in MVC
此外,我将为客户端验证引入自定义jquery验证框架,以便同一表单没有多个回发,然后在动态生成下一个表单之前自定义服务器端验证。有关信息,请查看此博客的框架:Jquery - Custom Validation
请记住,您不希望在数据存储和视图之间进行大量聊天,因此我会将尽可能多的配置存储在经过深思熟虑的缓存实现中。
我希望这会有所帮助。