Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
Asp.net mvc 2 ASP.NET MVC ModelState有效-如何从验证中排除特定属性?_Asp.net Mvc 2_Data Annotations - Fatal编程技术网

Asp.net mvc 2 ASP.NET MVC ModelState有效-如何从验证中排除特定属性?

Asp.net mvc 2 ASP.NET MVC ModelState有效-如何从验证中排除特定属性?,asp.net-mvc-2,data-annotations,Asp.net Mvc 2,Data Annotations,我是MVC的核心人物。我有一个模特: public class Usuarios { [Required(ErrorMessage = "**TxtOPID is required")] public string TxtOpID { get { return this.txt_opId; } set { this.txt_opId = value; } } [

我是MVC的核心人物。我有一个模特:

    public class Usuarios
    {

     [Required(ErrorMessage = "**TxtOPID is required")]
        public string TxtOpID
        {
            get { return this.txt_opId; }
            set { this.txt_opId = value; }
        }

     [Required(ErrorMessage="**Password is required")]
        public string TxtPassword
        {
            get { return this.txt_password; }
            set { this.txt_password = value; }
        }

        [Required(ErrorMessage="**Email is required")]
        [RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$",ErrorMessage="**Invalid email")]
        public string TxtEmail
        {
            get { return this.txt_email; }
            set { this.txt_email = value; }
        }
}
这是DataAnnotations,当我尝试使用ModelState.IsValid属性检查所有属性是否有效时,效果很好

问题是当我不想检查所有属性时。例如: 如果我只想检查TxtOPID和TxtSenha属性,比如在登录表单中,只需要OPID和密码

如何在控制器中的特定操作中排除电子邮件属性验证

我试过:

  public ActionResult SignIn([Bind(Exclude="TxtEmail")]Usuarios usuario)
  {
    [...]
  }
但它不起作用,因为它总是无效的,那个特定的表单不需要TxtEmail


有什么想法吗?

不要将所有验证放在一个类中。为
登录
构建一个类,为
联系人
构建另一个类,等等

基本上,每个模型都有数据注释来验证该模型。。即使你有30个不同的。您总是可以创建一个基类,并将公共属性放在其中,然后简单地从中继承


在我的情况下,我有一个登录表单,类(使用数据注释)验证“用户名”和“密码”。我还有一个“事件”表单,需要事件名称、日期、时间等。因此我有另一个类来验证事件。

但是,这些类将重复它们的属性?是的,它们可以。。。例如你可以在3个不同的地方使用“电子邮件”。一个用于联系人表单,一个用于登录表单,一个用于gravatar。您将制作3个模型(登录、电子邮件、gravatar)并验证每个模型上的电子邮件属性。如果您不验证“电子邮件”的总体概念,您将验证模型以及该模型中的任何属性。这就是MVC的理念。您构建了一个模型,在多个地方使用它,并且验证是完全相同的。如果电子邮件在一个场景中有效,而在另一个场景中未验证,则该电子邮件属性具有不同的上下文,因此它需要不同的模型。@user257234-您可以始终使用继承并将公共属性放入一些有意义的基类中。另外,切换到自动属性,这将节省您键入的大量内容:公共字符串密码{get;set;}+1用于公共属性和自动属性。-爱情网4