【发布时间】:2014-05-21 12:17:10
【问题描述】:
我有一个 MVC4 网站,其中链接了不同的资源文件,并且本地化工作正常。
但我想做的是从数据库中获取值,而不是处理 resx 文件。
我扩展了“DisplayNameAttribute”类以获取一个键(整数)和一个 CultureInfo 对象,并使用它们从数据库中检索值。
我想从 CultureInfo 中得到它的字符串表示形式(例如“en-US”或“fr-FR”)。
我的问题是我可以将整数传递给扩展类的构造函数,而不是 CultureInfo。
扩展属性的代码示例:
public class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
private int ResourceKey { get; set; }
private CultureInfo Culture { get; set; }
public LocalizedDisplayNameAttribute(int resourceKey, CultureInfo culture)
{
ResourceKey = resourceKey;
Culture = culture;
}
public override string DisplayName
{
get
{
string displayName = "Get from database.. TEST";
return string.IsNullOrEmpty(displayName) ? string.Format("[[{0}]]", ResourceKey) : displayName;
}
}
}
我想做的事:
[LocalizedDisplayName(1, Thread.CurrentThread.CurrentUICulture))]
public string userName { get; set; } //The full name of the user
甚至更好:
private CultureInfo culture = Thread.CurrentThread.CurrentUICulture;
[LocalizedDisplayName(1, culture))]
public string userName { get; set; } //The full name of the user
我的问题是,我该怎么做?
【问题讨论】:
-
您不能将
Thread.CurrentThread.CurrentUICulture作为属性的参数,因为它不是编译时值。为什么不在需要的地方立即使用Thread.CurrentThread.CurrentUICulture? -
不能只获取 DisplayName 属性或构造函数中的 CultureInfo 吗?
-
这个解决方案很明显,但我认为这行不通。但实际上它确实并且也使模型代码更清晰。谢谢!如果您可以将此作为答案提交,我会将其标记为已接受。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 localization