.NET Mvc 本地化

.NET Mvc Localization

我正在尝试从 Mvc 扩展 DisplayAttrubte Logic。 不好的是因为 DisplayAttribute 是密封的 class 我无法继承。因此我继承自 DisplayNameAttribute.

public class TranslatedDisplayAttribute : DisplayNameAttribute
{
    public override string DisplayName
    {
        get
        {
            var myVariableName = ???;
            return TranslationService.String( myVariableName  );
        }
    }
}

而且我想像使用 DisplayAttribute 一样使用此属性。

public class MyDto {

    [TranslatedDisplay]
    public string myVariable { get; set; }
}

是否可以获取变量名称,其中分配了属性,以便在 TranslatedDisplayAttribute 实现中变量 myVariableName 自动设置为变量名称 (myVariable)?我不想做这样的事情。

public class MyDto {

    [TranslatedDisplay( Name = "myVariable" )]
    public string myVariable { get; set; }
}

编辑

而且我不想对 Resx 文件使用翻译方法。但是@Romias 谢谢你的回答。

[Display(Name = "XXX_YourPropertyItem", ResourceType = typeof(YourResourceFile))]
public string YourProperty { get; set; }

可能您已经意识到这一点,并且您想以另一种方式进行翻译,但是内置方法正在使用 Display 属性的另一个重载,使用资源文件。

[Display(Name = "XXX_YourPropertyItem", ResourceType = typeof(YourResourceFile))]
public string YourProperty { get; set; }

因此,"XXX_YourPropertyItem"是资源文件中的项目,"YourResourceFile"是资源文件的名称class。