2013-07-30 15 views
17

Chcę uzyskać komunikat o błędzie z zasobów. Kiedy wypróbowałem kody poniżej, przyjmuję ten błąd: "Argument atrybutu musi być wyrażeniem stałym, wyrażeniem typu lub wyrażeniem tworzenia tablicy typu parametru atrybutu" Co mogę zrobić?Używanie zasobów z komunikatem o błędzie w mvc

public class UserLoginModel 
{ 
    [Required(ErrorMessage =Resources.PageResources.enterYourEmail)] 
    public String Email{ get; set; } 

    [Required(ErrorMessage =Resources.PageResources.enterPassword)] 
    public String Password { get; set; 
} 
+0

możliwe duplikat [Dlaczego nie mogę korzystać z zasobów jako ErrorMessage z DataAnnotations?] (Http://stackoverflow.com/questions/2688888/why-cant-i-use-resources-as-errormessage- with-dataannotations) – Liam

Odpowiedz

42

Spróbuj

[Required(ErrorMessageResourceType = typeof(Resources.Resources),  
      ErrorMessageResourceName = "enterYourEmail")] 
public String Email{ get; set; } 

[Required(ErrorMessageResourceType = typeof(Resources.Resources),  
      ErrorMessageResourceName = "enterPassword")] 
public String Password { get; set; 
+0

Powitanie @MerveKaya – Amit

+0

+1, idealne do listy ulubionych pytań;) – FSou1

+0

Musiałem dodać ErrorMessage = null, aby działało z ASP.NET mvc 5. Jak: [Porównaj ("NewPassword", ErrorMessageResourceType = typeof (Resources.ModelStateErrors.Index), ErrorMessageResourceName = "passworddonotmatch", ErrorMessage = null)] public string ConfirmPassword {get; zestaw; } –

0

podobne podejście, ale bez problemu związanego przez @Ali Baig o musieli dodać ErrorMessage = null, aby to działało.

[Required(ErrorMessageResourceName = nameof(Resources.Global_Errors.ReqName), 
ErrorMessageResourceType = typeof(Resources.Global_Errors))]