asp.net-mvc – 数据模型需要两个属性之一

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 数据模型需要两个属性之一前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个带有FirstName和LastName的Person类.我希望用户必须在UI中输入两个值中的至少一个,但他可能不必输入每个值.

如果我在每个上面放置必需的属性/数据注释,那么这两者都是必需的.

如何为此规则进行服务器端验证(也使用客户端验证)?

解决方法

您可以为此使用自定义属性.简而言之,自定义属性将检索这两个值,然后确保至少有一个值具有值.有关更多信息,请参见 this page.这是一个例子(未经测试的代码):
  1. [AttributeUsage(AttributeTargets.Property,AllowMultiple =false,Inherited = false)]
  2. public class ValidatePersonName: ValidationAttribute
  3. {
  4. protected override ValidationResult IsValid(object value,ValidationContext validationContext)
  5. {
  6. string FirstName = (string)validationContext.ObjectType.GetProperty("FirstName").GetValue(validationContext.ObjectInstance,null);
  7.  
  8. string LastName = (string)validationContext.ObjectType.GetProperty("LastName").GetValue(validationContext.ObjectInstance,null);
  9.  
  10. //check at least one has a value
  11. if (string.IsNullOrEmpty(FirstName) && string.IsNullOrEmpty(LastName))
  12. return new ValidationResult("At least one is required!!");
  13.  
  14. return ValidationResult.Success;
  15. }
  16. }

用法

  1. class Person{
  2.  
  3. [ValidatePersonName]
  4. FirstName{get;set;}
  5.  
  6. LastName{get;set;}
  7. }

猜你在找的asp.Net相关文章