验证所需的两个字段之一

rak*_*los 3 c# model-view-controller asp.net-mvc

我有两个字段:

并且只需要其中之一。但如果两者都被省略,我希望两个字段都突出显示。如果填写其中之一,则模型没问题,表格应该提交。

如何才能做到这一点?

Jas*_*kan 7

所有复杂的验证都从您从IValidatableObject继承的视图模型开始。然后您覆盖Validate并输入您自己的验证规则。

IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
    if (String.IsNullOrWhiteSpace(FirstName) && String.IsNullOrWhiteSpace(LastName))
    {
        yield return new ValidationResult("A name must be entered.", new string[] { "FirstName", "LastName" });
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这仅确保此规则的服务器端验证。如果您希望它在客户端,您需要编写自己的 JavaScript / jQuery 代码来处理验证。


pol*_*ata 3

你可以使用这个库,它会帮助你做这样的事情

[RequiredIf("PropertyValidationDependsOn", true)]
   public string PropertyToValidate { get; set; }
Run Code Online (Sandbox Code Playgroud)