2011-10-26 68 views
2

我試圖擴展RequiredAttribute來做一些本地化。我寫了這個:MVC 3 C#RequiredAttribute Extension

public class LocalizedRequiredAttribute : RequiredAttribute

{ 
    public LocalizedRequiredAttribute(string errorMessageResourceName) 
    { 
     this.ErrorMessageResourceName = string.IsNullOrEmpty(errorMessageResourceName) ? "Required_ValidationError" : errorMessageResourceName; 
     ErrorMessageResourceType = typeof(bop.Core.Resources.Label); 
    } 
} 

在客戶端沒有驗證消息的呈現方式。哪裏不對? 感謝您的幫助。 Luca

回答

4

在您的後續評論中,您指定客戶端驗證不起作用。它看起來像你問了同樣的問題here,但爲了StackOverflow,我會提供答案。

LocalizedRequiredAttribute類也必須實現IClientValidatable讓客戶端驗證工作:

using System.Web.Mvc; 
public class LocalizedRequiredAttribute : RequiredAttribute, IClientValidatable 
{ 
    // your previous code 

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) 
    { 
     yield return new ModelClientValidationRule 
     { 
      // format the error message to include the property's display name. 
      ErrorMessage = FormatErrorMessage(metadata.DisplayName), 

      // uses the required validation type. 
      ValidationType = "required" 
     }; 
    } 
} 
1

看看Darrin Dimitrov的帖子thisthis

希望這會有所幫助。

+0

達林您好,感謝鏈接。我試過你的代碼: ' 公共類LocalizedRequiredAttribute:RequiredAttribute標籤 { 公共LocalizedRequiredAttribute(字符串resourceTag) { 的ErrorMessage = GetMessageFromResource(resourceTag); } private static String GetMessageFromResource(String resourceTag) { return ResourceManager.Current.GetResourceString(resourceTag); } } ' 但我在「ResourceManager.Current」中出現錯誤。 – User907863

+0

我部分解決了。現在,LocalizedAttribute僅驗證服務器端,而不驗證客戶端......但如果我使用基礎屬性,則可以在我的客戶端中正常工作。任何想法?謝謝。盧卡 – User907863