Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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# 使用实体框架poco',基于不同用户角色的MVC4数据注释验证;s_C#_Entity Framework_Validation_Asp.net Mvc 4_Data Annotations - Fatal编程技术网

C# 使用实体框架poco',基于不同用户角色的MVC4数据注释验证;s

C# 使用实体框架poco',基于不同用户角色的MVC4数据注释验证;s,c#,entity-framework,validation,asp.net-mvc-4,data-annotations,C#,Entity Framework,Validation,Asp.net Mvc 4,Data Annotations,我正在开发一个复杂的应用程序,包含大约90种不同的表单(是的,很棒)。如何根据以下几个要求进行复杂的现场验证: 1) 字段要求基于登录的用户(角色) 2) 如果其他数据字段的回答不同,则字段要求会发生变化(动态) 如何使用EF5 POCO在MVC4中实现这一点 我目前已经为必填字段创建了数据注释,如下所示: 我的EF5 POCO车型: using System; using System.Collections.Generic; using System.ComponentModel.DataA

我正在开发一个复杂的应用程序,包含大约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; }
}
    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; }
    }
与我的EF5 POCO一起找到的ValidationModels.cs文件

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; }
}
    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; }
    }
这很好用,但我如何使我的验证动态


谢谢

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

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

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

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

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


我希望这会有所帮助。

您需要管理员为响应设置动态要求,还是从一开始就相当静态

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

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

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

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


我希望这会有所帮助。

是的,管理员可能会根据每个角色对其进行更改。我发现:我有一种感觉,这正是我想要的。我需要研究一下。是的,一个管理员可能会改变他们每个角色。我发现:我有一种感觉,这正是我想要的。我需要研究一下。