【问题标题】:How to apply Conditional Validation “Required if another property is empty” in ASP.NET MVC?如何在 ASP.NET MVC 中应用条件验证“如果另一个属性为空则需要”?
【发布时间】:2013-01-31 17:46:20
【问题描述】:

有没有一种方法可以为我的virtualPassword 属性实现必需的属性,但条件是Password 为空?

这是我的代码。

[DataType(DataType.Password)]
[LocalizedDisplayName("UserPassword", NameResourceType = typeof(Languages.Names))]
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Languages.Validations))]        
public string Password { get; set; }

private string _virtualPassword = null;
[NotMapped]
[DataType(DataType.Password)]
[LocalizedDisplayName("UserPassword", NameResourceType = typeof(Languages.Names))]
[StringLength(12, MinimumLength = 6, ErrorMessageResourceName = "StringLengthBetween", ErrorMessageResourceType = typeof(Languages.Validations))]
public virtual string virtualPassword { get { return _virtualPassword; } set { _virtualPassword = value; } }

【问题讨论】:

标签: asp.net-mvc validation model conditional


【解决方案1】:

您可以通过在模型中实现 IValidatableObject 来实现自定义验证。

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var issues = new List<ValidationResult>();
if(issue_exist_in_model) //implement whatever condition is applicable
{
    issues.Add(new ValidationResult("Message for issur that exist"));
}

  return issues;
}

【讨论】:

  • 我真的不明白为什么人们不断地提出这个建议而没有告诉他们这不适用于客户端验证。它可能会产生奇怪的情况,验证失败,您修复它,它发布,然后验证再次失败并出现一组不同的验证错误。如今,几乎每个人都在使用客户端验证。
  • @MystereMan 我猜你是对的,但他想知道自定义验证。至少他知道它的存在。也许我应该在我的回答中附加一些建议:)
猜你喜欢
  • 1970-01-01
  • 2015-04-01
  • 2021-12-10
  • 2011-07-19
  • 2017-06-07
  • 2022-01-17
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
相关资源
最近更新 更多