Asp.net-Mvc
數據模型需要兩個屬性之一
假設我有一個
Person班級FirstNameandLastName。我希望使用者必須在 UI 中輸入兩個值中的至少一個,但他可能不必輸入每個值。如果我
Required在它們中的每一個上放置屬性/數據註釋,這使得它們都成為必需的。如何為此規則進行伺服器端驗證(也包括客戶端驗證)?
您可以為此使用自定義屬性。簡而言之,自定義屬性將檢索這兩個值,然後確保至少一個具有值。請參閱此頁面了解更多資訊。這是一個範例(未經測試的程式碼):
[AttributeUsage(AttributeTargets.Property, AllowMultiple =false, Inherited = false)] public class ValidatePersonName: ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { string FirstName = (string)validationContext.ObjectType.GetProperty("FirstName").GetValue(validationContext.ObjectInstance, null); string LastName = (string)validationContext.ObjectType.GetProperty("LastName").GetValue(validationContext.ObjectInstance, null); //check at least one has a value if (string.IsNullOrEmpty(FirstName) && string.IsNullOrEmpty(LastName)) return new ValidationResult("At least one is required!!"); return ValidationResult.Success; } }用法:
class Person{ [ValidatePersonName] FirstName{get;set;} LastName{get;set;} }