MVC - 本地化[Display]属性,但不仅仅是Name

时间:2014-06-13 10:59:50

标签: c# asp.net-mvc resources data-annotations

我一直在尝试本地化我的ASP.NET MVC网站,我决定创建用于存储我的字符串的资源文件。我有一个带有这样注释的模型:

    [Required(ErrorMessage = "Please enter your e-mail address")]
    [Display(Name = "E-mail address:", Prompt = "somename@mail.com")]
    public string EmailAddress { get; set; }

这是我的新资源文件:

Contact.resx
EmailName     E-mail address:
EmailPrompt   sample@mail.com
EmailReq      Please enter your e-mail address

我想使用资源文件并从中获取字符串。我设法使它适用于[必需]和[显示],但只是为了名称:

    [Required(ErrorMessageResourceType = typeof(Contact), ErrorMessageResourceName = "EmailReq")]
    [Display(ResourceType = typeof(Contact), Name = "EmailName")]
    public string EmailAddress { get; set; }

但提示呢?如果我添加提示=" EmailPrompt"它只是保存" EmailPrompt"作为字符串,而不是" sample@mail.com"。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法,但在另一段代码中却出了问题。我通过反思得到了提示值。通过公共字段Prompt和GetPrompt()方法获取值是一个很大的不同:

DisplayAttribute attr = GetTheAttribute();
string firstVal = attr.Prompt;
string secondVal = attr.GetPrompt();

firstVal包含要在资源文件中查找的密钥的名称;使用GetPrompt()检索资源的实际值,如secondVal。