Asp.net mvc 4 将属性显示名称转换委托给处理程序
模型中的当前代码:Asp.net mvc 4 将属性显示名称转换委托给处理程序,asp.net-mvc-4,data-annotations,Asp.net Mvc 4,Data Annotations,模型中的当前代码: [Display(Name = "E-mail")] public string EMail { get; set; } 所需代码: public string EMail { get; set; } 我想将翻译委托给处理程序,类似这样: 如果(propertyName==“电子邮件”)返回“电子邮件” 根据我对您问题的理解,我假设您正在尝试在应用程序中实现本地化 如果是,有两种选择 资源 在.NET中,您可以在应用程序中处理翻译(每种语言一个resx)。然后,您可以通过
[Display(Name = "E-mail")]
public string EMail { get; set; }
所需代码:
public string EMail { get; set; }
我想将翻译委托给处理程序,类似这样:
如果(propertyName==“电子邮件”)返回“电子邮件”
根据我对您问题的理解,我假设您正在尝试在应用程序中实现本地化 如果是,有两种选择 资源 在.NET中,您可以在应用程序中处理翻译(每种语言一个resx)。然后,您可以通过指定
Display
属性的ResourceType
属性来指定资源。比如,
public class Model
{
[Display(Name = "Email", ResourceType = typeof(Resources.Strings))]
public string Email { get; set; }
}
自定义属性
或者,如果设置在处理程序中实现该属性,则可以实现自定义属性
编辑:根据上述文章中的示例进行修改
如果向项目中添加新的资源文件,请说出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; }
}
如果我能进一步提供帮助,请告诉我
Matt我不想写这行:[Display(Name=“Email”Resource Type=typeof(Resources.Strings))]只要这样:public string Email{get;set;}好的,你对另一个选项——自定义属性有什么想法?我不喜欢这样,我必须记住在所有字段中指定属性。令人惊讶的是,这件事做得再聪明不过了。但我可能不得不采取另一种选择。怎么做的?