模型中的当前代码:
[Display(Name = "E-mail")]
public string EMail { get; set; }
所需代码:
public string EMail { get; set; }
我想将翻译委托给处理程序,如下所示:
if(propertyName ==" EMail")返回"电子邮件"
答案 0 :(得分:0)
根据我对您的问题的理解,我假设您正在尝试在您的应用程序中实现本地化。
如果是这样,有两种选择;
<强>资源强>
在.NET中,您可以add Resource (.resx) files进入您的应用程序来处理翻译(每种语言一个resx)。然后,您可以通过指定ResourceType
属性的Display
属性来指定资源。例如;
public class Model
{
[Display(Name = "Email", ResourceType = typeof(Resources.Strings))]
public string Email { get; set; }
}
自定义属性
或者,如果您已设置在处理程序中实现此功能,那么您可以实现自定义属性as demonstrated in this question。
编辑:修改自上述帖子中的示例。
如果您向项目添加新的资源文件 - 比如Strings.resx并将“HelloWorld”添加为字段。然后,您可以创建新属性,例如LocalisedDisplayNameAttribute
;
public class LocalisedDisplayNameAttribute : DisplayNameAttribute
{
public LocalisedDisplayNameAttribute(string resourceId)
: base(GetMessageFromResource(resourceId))
{
}
private static string GetMessageFromResource(string resourceId)
{
// "Strings" is the name of your resource file.
ResourceManager resourceManager = Strings.ResourceManager;
return resourceManager.GetString(resourceId);
}
}
然后您可以按如下方式使用它;
public class Model
{
[LocalisedDisplayName("HelloWorld")]
public string Email { get; set; }
}
如果我能进一步提供帮助,请告诉我,
马特