MVC自定义显示属性

时间:2014-10-16 13:24:09

标签: asp.net-mvc

我已经为DisplayName编写了自定义属性,如下所示。

namespace CRM.Model
{
    public class LocalizedDisplayNameAttribute : DisplayNameAttribute
    {
        private readonly string resourcekey;

        public LocalizedDisplayNameAttribute(string resourceId)
            : base(GetMessageFromResource(resourceId))
        { 

        }

        public static string GetMessageFromResource(string resourceId)
        {
            // My Localization logic
            return LocalizationResourceProvider.Current.GetString(resourceId);
        }       
    }
}

首次加载/启动模型时,将成功调用上述自定义属性类。

但是,如果,我将回发该页面,那么它就不会被调用。

例如,当我将我的语言从英语改为法语时。它仍然显示英文内容。

为什么会这样?我该如何解决这个问题?我们可以明确加载模型数据

2 个答案:

答案 0 :(得分:0)

好吧,它是在构造函数中设置语言。这就是为什么它仅在第一次加载/启动模型时才有效。不确定您的解决方案的其余部分如何工作,但您也需要在其他地方运行本地化逻辑。

答案 1 :(得分:0)

尝试在应用程序启动时注册您的属性,see类似的线程。