【问题标题】:ASP.NET MVC: Forcing culture info on web applicationASP.NET MVC:在 Web 应用程序上强制使用文化信息
【发布时间】:2012-01-19 16:16:50
【问题描述】:

我正在开发一个 Web 应用程序,该应用程序具有一些 ASP.NET 代码,这些代码在视图上的 javascript 中生成一些值。

var userLocation = { lat: @Model.Location.Latitude, lng: @Model.Location.Longitude };

这在我的电脑上运行得很好,它会生成类似这样的东西:

var userLocation = { lat: 9.9333333, lng: -84.0833333 };

问题是我在另一台将语言环境设置为西班牙语的计算机上设置开发环境,在这种情况下生成的 javascript 看起来像这样(注意逗号作为小数分隔符):

var userLocation = { lat: 9,9333333, lng: -84,0833333 };

这将清楚地显示 javascript 中的错误。

我将计算机中的设置更改为使用美国语言环境设置,但它没有更改输出上的任何内容(我重建了解决方案,甚至重新启动了计算机,但没有效果)。

我想知道在 Web 应用程序中设置区域设置的最佳方法是什么,以便它始终生成点作为小数点分隔符。

谢谢! 会

【问题讨论】:

    标签: javascript asp.net-mvc cultureinfo


    【解决方案1】:

    我认为纬度是十进制或双精度值,对吧?试试这个

    CultureInfo usa = new CultureInfo("en-US");
    
    var userLocation = { lat: @Model.Location.Latitude.ToString(usa), lng: @Model.Location.Longitude.ToString(usa) };
    

    您需要为您的变量定义一个特定的 CultureInfo。所以无论当前的文化是什么,它都会一直在指定的 CultureInfo 中。

    如果要改变整个应用的文化,需要在Web.Config > system.web中设置全球化

    <globalization uiCulture="en" culture="en-US" />
    

    【讨论】:

    • 是的,我知道这行得通,但这意味着无论我在哪里打印十进制值,我的应用程序的每个视图都会发生变化。我需要一种方法来代替整个应用程序。
    • 因此,如果您在整个应用程序中更改 Int32 显示的格式,所有 javascript 之外的 @variable 都将显示不正确。这就是你想要的吗?
    • 没错,我不知道 web.config 中的选项。谢谢@DMoses 你是什么意思不正确?这个想法是我总是知道数字的确切显示方式,并在 javascript 中相应地处理它。
    • 考虑&lt;script type="javascript"&gt;var x = @Model.mynum&lt;/script&gt; &lt;div&gt; hi there visiter # @ViewBag.visitorNumber&lt;/div&gt; 如果您覆盖文化或当前文化数字格式化程序,它将以错误的格式显示访客编号。理想情况下,您只希望 javascript 数字与文化无关。
    【解决方案2】:
    var userLocation = { 
      lat: @Model.Location.Latitude.ToString(CultureInfo.InvariantCulture), 
      lng: @Model.Location.Longitude.ToString(CultureInfo.InvariantCulture)
    }; 
    

    或者,如果您不想修改视图,请在控制器中添加以下行:

      System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
    

    请注意,这可能会导致日期格式等副作用。

    如果您不想对代码进行任何更改,请遵循 Fabio 关于 web.config 的建议。但是这样做,您并没有帮您的用户一个忙,因为:再次,日期格式等。

    【讨论】:

    • 我明白你的意思,但我的想法是,如果我总是知道日期/数字的格式,那么我可以根据用户的语言环境使用 javascript 正确格式化它们。
    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多