asp.net – 如何在mvc3中对来自@ Html.LabelFor()的内容进行本地化

前端之家收集整理的这篇文章主要介绍了asp.net – 如何在mvc3中对来自@ Html.LabelFor()的内容进行本地化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只是延长了我的 this question.

我在我的MVC Web应用程序中有我的App_LocalResources(我没有在单独的dll中).

我有一个不同组件的模型.在模型中我有2个国家和城市类:

public class Country: MyContainer
{
    public City city {get;set;}
} 

public class City
{
    public CityName {get;set;}
}

public class MyContainer
{
    public Cid {get;set;}
}

所以在我的action方法中,我创建并传递country的对象作为我的viewmodel.

在视图中我用这个:

@Html.LabelFor(mdl=>mdl.City.CityName)
@Html.LabelFor(mdl=>mdl.Cid)

所以这很好用,带有文字标签用英文呈现.

但是如何修改它以便它从我的Web应用程序中的资源文件中读取文本?

解决方法

您可以编写自定义显示属性
public class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
    public LocalizedDisplayNameAttribute(string key): base(FormatMessage(key))
    {
    }

    private static string FormatMessage(string key)
    {
        // TODO: fetch the corresponding string from your resource file
        throw new NotImplementedException();
    }
}

然后:

public class City
{
    [LocalizedDisplayName("cityname")]
    public string CityName { get; set; }
}

您也可以签出following localization guide.它提供了样本属性的完整实现.

猜你在找的asp.Net相关文章