Asp.net
使用繼承的 RegularExpressionAttribute 進行 ASP.NET MVC 數據註釋客戶端驗證
為了保持我的模型驗證乾淨,我想實現我自己的驗證屬性,比如
PhoneNumberAttribute和EmailAttribute。其中一些可以有利地實現為繼承自RegularExpressionAttribute.但是,我注意到這樣做會破壞這些屬性的客戶端驗證。我假設某種類型的綁定在某處失敗。
有什麼想法可以使客戶端驗證正常工作嗎?
程式碼範例:
public sealed class MailAddressAttribute : RegularExpressionAttribute { public MailAddressAttribute() : base(@"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$") { } }
您需要為您的自定義屬性註冊一個客戶端驗證適配器。在這種情況下,您可以使用 System.Web.Mvc 中現有的 RegularExpressionAttributeAdapter,因為它應該與標準正則表達式屬性完全相同。然後在您的應用程序開始使用時註冊它:
DataAnnotationsModelValidatorProvider.RegisterAdapter( typeof(MailAddressAttribute), typeof(RegularExpressionAttributeAdapter));如果您編寫需要自定義客戶端驗證的屬性,您可以通過從DataAnnotationsModelValidator繼承來實現自己的適配器(另請參閱Phil Haack 的部落格)。