Javascript文化永远在我们身边

时间:2010-06-09 00:30:27

标签: c# asp.net javascript validation localization

我不确定我是否理解这段代码或者我是否正确使用它,但我的印象是在ASP.NET 2.0 AJAX网站上我可以运行如下的javascript:

var c = Sys.CultureInfo.CurrentCulture

它将为我提供用户在访问时在浏览器中指定的文化/语言设置。但是,对我来说,无论我在firefox或IE中选择哪种语言,它总会回来'en-US'。

此服务器端代码:

string[] languages = HttpContext.Current.Request.UserLanguages;

if (languages == null || languages.Length == 0)
   return null;

try
{
   string language = languages[0].ToLowerInvariant().Trim();
   return CultureInfo.CreateSpecificCulture(language);
}
catch (ArgumentException)
{
    return null;
}

会返回我当前设置的语言。但我需要在客户端执行此操作,因为我需要将字符串解析为日期时间并在回发之前进行一些验证,字符串可以是MM / DD / YYYY或DD / MM / YYYY,或其他一些此类事情。

我错过了什么?

编辑: 好的,我偶然发现了这个图书馆http://www.datejs.com/。它看起来很甜蜜,它有忍者,所以我已经卖得很多了。但是在他们的文档中,我注意到你需要包含一个特定于语言的js文件。我想你必须在服务器端做出决定并发出正确的脚本包含标签,这让我思考。我应该用ASP.NET AJAX做这件事吗?即检查服务器端文化(有效)并在js中基于此设置Sys.CultureInfo.CurrentCulture?我希望它能从浏览器客户端自动获取它。

3 个答案:

答案 0 :(得分:1)

Sys.CultureInfo.CurrentCulture的值基于从服务器发送的值。要使服务器将正确的值发送回客户端,您需要在ScriptManager对象上将EnableScriptGlobalization属性设置为true(默认情况下为false)。

答案 1 :(得分:0)

TMK,浏览器在第一个请求中没有将任何时区信息传递给服务器。您需要使用Javascript

执行此操作

答案 2 :(得分:0)

您可以尝试these行以确定浏览器的区域设置。