我已经以其他形式看到过这个问题(主要与验证有关),但无法理解答案。
我有以下内容:
[Required, DisplayName("First Name")]
public virtual string GivenName { get; set; }
我想让 DisplayName 本地化。我通过创建一个RequiredAttribute Extension 来进行尝试,就像其他人一样:
public class RequiredFieldAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
public RequiredFieldAttribute()
{
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public override string FormatErrorMessage(string name) {
var field = T(name).Text;
return T("Please fill in {0}.", field).Text;
}
}
}
返回的错误消息不断返回英文名称。但我确信有翻译,因为当我在视图中使用以下内容时,我得到了本地化名称:
@Html.LabelFor(m => register.GivenName, T("First Name"))
消息本身(请填写...)也已本地化。除了字段名称不是。在视图中请求字段名的字符串时如何本地化它,但在扩展中使用它时却没有。
在查看关于 codeplex 的讨论时,我看到一些变更集修复了有关命名空间中本地化数据注释的问题Orchard.MVC.DataAnnotations
。但我在现有模块中找不到任何关于如何使用这些模块的示例。