1

我正在开发一个具有大约 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; }
    }

这很好用,但我如何使我的验证动态化?

谢谢!

4

1 回答 1

1

您是否需要管理员为响应设置动态要求,或者它们从一开始就相当静态?

如果我是你,我会为每个触发的响应创建不同的操作方法。这将允许您将表单指定为部分视图并根据输入逻辑呈现它们。

如果您需要自定义字段验证,建议您编写自己的数据验证框架。您可以从 ActionFilterAttribute 继承,它允许您在每个操作请求/响应周期之前和之后添加自定义验证。在这里查找一些信息MVC 中的自定义过滤器

此外,我会为客户端验证引入一个自定义 jquery 验证框架,这样同一个表单就没有多个回发,然后在动态生成下一个表单之前进行自定义服务器端验证。有关框架的信息,请查看此博客:Jquery - 自定义验证

请记住,您不希望在数据存储和视图之间进行大量聊天,因此我会将尽可能多的配置存储在经过深思熟虑的缓存实现中。

我希望这有帮助。

于 2013-01-14T16:17:04.890 回答