在 c# 中使用来自控制台应用程序的数据注释仅验证模型 class 的几个属性
Validate only few properties of a model class using Data Annotations from a Console application in c#
我有一个模型 class 具有如下几个属性,每个 属性 都有用于验证的数据注释
Class User{
[Required]
public string First Name{get;set;}
[Required]
public string Last Name {get;set;}
[Required, EmailAddress, MaxLength(256), Display(Name = "Email Address")]
public string Email {get;set;}
[Required, MaxLength(20), DataType(DataType.Password), Display(Name ="Password")]
public string Pasword {get;set;}
}
现在,在控制台应用程序中,我要求用户提供电子邮件地址和密码以进行登录。我如何验证给定的电子邮件和密码是否满足条件。由于是登录,我不想验证名字和姓氏
var context = new ValidationContext(user);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(user, context, results, true);
TryValidateObject 将一个实例作为第一个参数,所以当我这样做时它也会 returns 我的名字和姓氏出错
有人可以建议我如何使用同一用户只验证电子邮件和密码吗?class?
如果您的应用程序的不同部分需要不同的设置或属性和验证规则,那么您应该为此目的使用完全不同的模型。所以你可以有一个像这样的新模型:
public class UserCredentials
{
[Required, EmailAddress, MaxLength(256), Display(Name = "Email Address")]
public string Email {get;set;}
[Required, MaxLength(20), DataType(DataType.Password), Display(Name ="Password")]
public string Password {get;set;}
}
现在你的代码看起来像这样可以工作了:
UserCredentials userCredentials = .... //Get the credentials from somewhere
var context = new ValidationContext(userCredentials);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(userCredentials, context, results, true);
此外,如果您想与用户共享此代码 class,您可以使用继承:
public class User : UserCredentials
{
[Required]
public string FirstName{ get; set; }
[Required]
public string LastName { get; set; }
}
我会将 class 拆分为用户名和密码的基础 class,并从中创建一个 class 来保存用户名和密码。
像这样:
Class User : AuthUser {
[Required]
public string First Name{get;set;}
[Required]
public string Last Name {get;set;}
}
Class AuthUser {
[Required, EmailAddress, MaxLength(256), Display(Name = "Email Address")]
public string Email {get;set;}
[Required, MaxLength(20), DataType(DataType.Password), Display(Name ="Password")]
public string Pasword {get;set;}
}
我有一个模型 class 具有如下几个属性,每个 属性 都有用于验证的数据注释
Class User{
[Required]
public string First Name{get;set;}
[Required]
public string Last Name {get;set;}
[Required, EmailAddress, MaxLength(256), Display(Name = "Email Address")]
public string Email {get;set;}
[Required, MaxLength(20), DataType(DataType.Password), Display(Name ="Password")]
public string Pasword {get;set;}
}
现在,在控制台应用程序中,我要求用户提供电子邮件地址和密码以进行登录。我如何验证给定的电子邮件和密码是否满足条件。由于是登录,我不想验证名字和姓氏
var context = new ValidationContext(user);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(user, context, results, true);
TryValidateObject 将一个实例作为第一个参数,所以当我这样做时它也会 returns 我的名字和姓氏出错
有人可以建议我如何使用同一用户只验证电子邮件和密码吗?class?
如果您的应用程序的不同部分需要不同的设置或属性和验证规则,那么您应该为此目的使用完全不同的模型。所以你可以有一个像这样的新模型:
public class UserCredentials
{
[Required, EmailAddress, MaxLength(256), Display(Name = "Email Address")]
public string Email {get;set;}
[Required, MaxLength(20), DataType(DataType.Password), Display(Name ="Password")]
public string Password {get;set;}
}
现在你的代码看起来像这样可以工作了:
UserCredentials userCredentials = .... //Get the credentials from somewhere
var context = new ValidationContext(userCredentials);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(userCredentials, context, results, true);
此外,如果您想与用户共享此代码 class,您可以使用继承:
public class User : UserCredentials
{
[Required]
public string FirstName{ get; set; }
[Required]
public string LastName { get; set; }
}
我会将 class 拆分为用户名和密码的基础 class,并从中创建一个 class 来保存用户名和密码。
像这样:
Class User : AuthUser {
[Required]
public string First Name{get;set;}
[Required]
public string Last Name {get;set;}
}
Class AuthUser {
[Required, EmailAddress, MaxLength(256), Display(Name = "Email Address")]
public string Email {get;set;}
[Required, MaxLength(20), DataType(DataType.Password), Display(Name ="Password")]
public string Pasword {get;set;}
}