1

我有一个 Asp.net 形式的 TextBox。有一个简单的 javascript 女巫分隔 TextBox 中的每三个数字。当您在 TextBox 中输入数据时,它工作正常。我使用逗号,分隔数字并使用点.作为浮点字符。

正如我所说,当我在 TextBox 中输入数据时,一切正常。但是当回发发生并将保存的数据返回给客户端时,每个.(s) 已被删除(例如,2.3保存为23和 TextBox 中的数字由.而不是,.

此问题仅在特定服务器(Windows Server 2003 SP1)中发生,并且在其他 Windows Server 2003(SP1)中正常工作!我第一次遇到这个问题!

但我认为问题在于服务器中的特定区域和语言选项。此服务器已加入域控制器。当我将区域和语言选项更改为此设置时:

十进制符号 ->.

数字分组符号 ->,

没有什么变化。

当我在自定义设置后检查以下项目时:

将所有设置应用于当前用户帐户和默认用户配置文件 ->checked

当我重新启动服务器时,它从域中跳出来,需要重新加入域控制器!当然,一切都没有改变!

你有这个问题吗?请有任何解决方案!

我不能在这里发布代码,因为代码太复杂了,我确信问题不是因为代码,因为它在任何地方都可以工作,除非指定的服务器。

编辑

还为网络服务用户设置区域和语言选项可能有助于解决问题。任何人都知道我该怎么做?

4

2 回答 2

2

您是否尝试过在 web.config 中使用全球化标签?这可以防止您在多个服务器配置不同(即不同的语言包)时遇到麻烦。

<configuration>
   <system.web>
      <globalization 
         culture="en-US"
         uiCulture="en-US" />
   </system.web>
</configuration>
于 2011-04-23T09:12:15.303 回答
1

在解决了一个类似的问题很久之后,我在一些线索的帮助下做了以下事情(也在 StackOverFlow 上找到,顺便说一下 StackOverFlow 岩石......)

我做的第一件事是转储服务器的实际想法(Page_Load):

var dtInfo = System.Globalization.DateTimeFormatInfo.CurrentInfo;
DisplayDebugInfo(String.Format(
    "Culture({0}/{1}), DateFormat(SD:{2},DS:{3})",
    System.Globalization.CultureInfo.CurrentCulture.Name,
    System.Globalization.CultureInfo.CurrentUICulture.Name,
    dtInfo.ShortDatePattern, dtInfo.DateSeparator));

同样在 Windows 2003 上,我尝试通过常规控制面板修复区域设置,但没有成功。

我还尝试在 web.config 中设置全球化设置,如其他解决方案中所述,但效果不大。

似乎一旦你开始搞乱区域设置,你很快就会到事情搞砸的地步。我决定避免弄乱注册表并寻求代码解决方案,因为这样当我的代码发布到生产环境时我就不必担心了。

我将以下代码添加到我的页面的基类中,以便它可以在任何地方修复它。您也可以将它放在 Page_Load 中。

using System.Globalization;
using System.Threading;

// Fix the cultural settings...
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "MM/dd/yyyy";
culture.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = culture;

问题解决了。反正对我来说。

于 2011-10-19T15:54:34.617 回答