模型中的当前代码:
[Display(Name = "E-mail")]
public string EMail { get; set; }
所需代码:
public string EMail { get; set; }
我想将翻译委托给处理程序,如下所示:
if(propertyName == "EMail") 返回 "E-mail"
模型中的当前代码:
[Display(Name = "E-mail")]
public string EMail { get; set; }
所需代码:
public string EMail { get; set; }
我想将翻译委托给处理程序,如下所示:
if(propertyName == "EMail") 返回 "E-mail"
根据我对您的问题的理解,我假设您正在尝试在您的应用程序中实现本地化。
如果是这样,有两种选择;
资源
在 .NET 中,您可以将资源 (.resx) 文件添加到应用程序中以处理翻译(每种语言一个 resx)。然后,您可以通过指定ResourceType
属性的Display
属性来指定资源。例如;
public class Model
{
[Display(Name = "Email", ResourceType = typeof(Resources.Strings))]
public string Email { get; set; }
}
自定义属性
或者,如果您设置在处理程序中实现它,那么您可以实现自定义属性,如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; }
}
让我知道如果我可以进一步提供帮助,
马特