我一直在使用Thread.CurrentThread.CurrentUICulture
与System.Threading
和System.Globalization
一段时间来手动设置我的ASP.net页面使用的语言,主要是使用Razor的WebForms和WebPages。 / p>
请参阅MSDN: Thread.CurrentThread.CurrentUICulture
我最近阅读了一个使用Page.UICulture
的教程(实际上,UICulture
似乎是强类型的)。令我惊讶的是,我得到了完全相同的结果;他们都改变了我的网站' ui语言设置并读取正确的资源文件。
对我来说,Thread.CurrentUICulture
更有意义(我直截了当地说,因为它实际上是#34;改变当前线索的文化")。
但是调用Page.Culture更容易,并且不需要再调用另一对ASP.net using
,所以我现在已经解决了这个问题。
这两者之间是否有根本区别,或者它们是否完全可以互换?
我担心的原因是我有一堆用第一种方法开发的旧网站,如果我轻率地将它们更新到第二种方法,我担心会遇到互换性冲突。
注意:我的工作重点通常是UICulture
,而Culture
对我的工作非常重要,但我问两个问题。它们。
答案 0 :(得分:2)
Page.UICulture
是Thread.CurrentThread
属性的包装器,用于内部.NET框架使用:
此属性是CurrentThread属性的快捷方式。文化是执行线程的属性
此API支持.NET Framework基础结构,不能直接在您的代码中使用。
查看source code,您可以清楚地看到:
public string UICulture
{
set
{
CultureInfo newUICulture = null;
if(StringUtil.EqualsIgnoreCase(value, HttpApplication.AutoCulture))
{
CultureInfo browserCulture = CultureFromUserLanguages(false);
if(browserCulture != null)
{
newUICulture = browserCulture;
}
}
else if(StringUtil.StringStartsWithIgnoreCase(value, HttpApplication.AutoCulture))
{
CultureInfo browserCulture = CultureFromUserLanguages(false);
if(browserCulture != null)
{
newUICulture = browserCulture;
}
else
{
try
{
newUICulture = HttpServerUtility.CreateReadOnlyCultureInfo(value.Substring(5));
}
catch {}
}
}
else
{
newUICulture = HttpServerUtility.CreateReadOnlyCultureInfo(value);
}
if (newUICulture != null)
{
Thread.CurrentThread.CurrentUICulture = newUICulture;
_dynamicUICulture = newUICulture;
}
}
get { return Thread.CurrentThread.CurrentUICulture.DisplayName; }
}
答案 1 :(得分:0)