1
A
回答
4
你可以寫一個自定義的驗證屬性,並用它裝點你的模型:
[AttributeUsage(AttributeTargets.Class)]
public class AtLeastOnePhoneAttribute: ValidationAttribute
{
public override bool IsValid(object value)
{
var model = value as SomeViewModel;
if (model != null)
{
return !string.IsNullOrEmpty(model.Phone1) ||
!string.IsNullOrEmpty(model.Phone2);
}
return false;
}
}
然後:
[AtLeastOnePhone(ErrorMessage = "Please enter at least one of the two phones")]
public class SomeViewModel
{
public string Phone1 { get; set; }
public string Phone2 { get; set; }
}
對於您可能需要更高級的驗證場景看看FluentValidation.NET或Foolproof。
1
並稱可以應用於單獨的屬性,而不是在類級重寫驗證方法的溶液...
創建以下自定義屬性。請注意構造函數中的「otherPropertyName」參數。這將允許您傳入其他屬性以用於驗證。
public class OneOrOtherRequiredAttribute: ValidationAttribute
{
public string OtherPropertyName { get; set; }
public OneOrOtherRequiredAttribute(string otherPropertyName)
{
OtherPropertyName = otherPropertyName;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var otherPropertyInfo = validationContext.ObjectType.GetProperty(OtherPropertyName);
var otherValue = (string)otherPropertyInfo.GetValue(validationContext.ObjectInstance, null);
if (string.IsNullOrEmpty(otherValue) && string.IsNullOrEmpty((string)value))
{
return new ValidationResult(this.ErrorMessage); //The error message passed into the Attribute's constructor
}
return null;
}
}
然後,您可以裝飾你的屬性,像這樣:(一定要在其他屬性的名稱通過與比較)
[OneOrOtherRequired("GroupNumber", ErrorMessage = "Either Group Number or Customer Number is required")]
public string CustomerNumber { get; set; }
[OneOrOtherRequired("CustomerNumber", ErrorMessage="Either Group Number or Customer Number is required")]
public string GroupNumber { get; set; }
相關問題
- 1. asp.net MVC2驗證
- 2. 驗證不存在Asp.net MVC2
- 3. 在ASP.Net驗證模型MVC2
- 4. 有條件驗證ASP.NET
- 5. 如何在ASP.net MVC2中做條件需求字段驗證
- 6. asp.net MVC2驗證型雙
- 7. 有條件驗證在asp.net MVC4
- 8. SSN驗證在MVC2
- 9. ASP.NET MVC條件驗證
- 10. ASP.Net MVC3條件驗證
- 11. ASP.net MVC條件驗證
- 12. MVC2驗證
- 13. ASP.NET MVC2 - 掛鉤到客戶端驗證
- 14. ASP.NET MVC2 DataAnnotaion驗證內更新面板
- 15. ASP.NET MVC2母版頁和身份驗證
- 16. 使用ASP.NET MVC2和jQuery遠程驗證
- 17. 有條件驗證
- 18. jQuery驗證或條件
- 19. Laravel驗證用或條件
- 20. 檢測是否asp.net MVC2客戶端驗證通過或失敗
- 21. DRY驗證與MVC2
- 22. jquery的有條件驗證
- 23. 有條件的Bean驗證
- 24. Asp.Net MVC2帶前綴控件的客戶端驗證問題
- 25. 沒有數據庫的MVC2驗證
- 26. 如何擴展ASP.NET MVC2開箱驗證以驗證信用卡/電子郵件?
- 27. MVC2/jQuery的驗證問題
- 28. MVC2驗證模型還沒有驗證屬性的屬性
- 29. ASP.NET MVC 3 - 如何在調用UpdateModel或TryUpdateModel時有條件地驗證(IValidatableObject)?
- 30. 在asp.net中進行數據驗證的部分類MVC2
的驗證工作,但錯誤信息沒有顯示時,需要對單個字段添加驗證,因爲在這種情況下,我將驗證註釋添加到類中,我需要額外做些什麼 – Arnab 2011-04-06 01:51:34
@Arnab,驗證消息將與「ValidationSummary」助手一起顯示。因爲這是一個類級別驗證程序,所以它不與任何屬性關聯,因此添加到模型狀態的密鑰爲空。如果您想將其與某些字段相關聯,則需要使用其他框架,例如我在答案中鏈接的框架,因爲數據註釋不支持此框架。 – 2011-04-06 05:53:27
驗證摘要在那裏,但不顯示。難道是因爲我在模型中使用註釋,而模型是在視圖中調用的viewmodel內部。 – Arnab 2011-04-08 18:13:32