0

模型中的当前代码:

[Display(Name = "E-mail")]
public string EMail { get; set; }

所需代码:

public string EMail { get; set; }

我想将翻译委托给处理程序,如下所示:

if(propertyName == "EMail") 返回 "E-mail"

4

1 回答 1

0

根据我对您的问题的理解,我假设您正在尝试在您的应用程序中实现本地化。

如果是这样,有两种选择;

资源

在 .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; }
}

让我知道如果我可以进一步提供帮助,

马特

于 2013-10-18T13:34:31.760 回答