我有一个Asp.net形式的TextBox。有一个简单的javascript女巫分隔TextBox中的每三个数字。在TextBox中输入数据时,它可以正常工作。我使用昏迷,
来分隔数字,并使用点.
作为浮点字符。
正如我所说,当我在TextBox中输入数据时,一切正常。但是当回发发生并且保存的数据返回给客户端时,每个.
(s)都被删除(例如2.3
保存为23
并且TextBox中的数字被分开由.
代替,
。
此问题只发生在特定的服务器(Windows Server 2003 SP1)中,并在其他Windows Server 2003(SP1)中正常工作!我第一次遇到这个问题了!
但我认为问题在于特定的区域和服务器中的语言选项。此服务器已加入域控制器。当我将区域和语言选项更改为此集合时:
十进制符号 - > .
数字分组符号 - > ,
没有任何改变。
在自定义设置后检查以下项目时:
将所有设置应用于当前用户帐户和默认用户个人资料 - > checked
当我重新启动服务器时,它会从域跳出来并需要重新加入域控制器!当然,没有什么变化了!
你有这个问题吗?请解决任何问题!
我不能在这里发布代码,因为代码太复杂而且我确定问题不是因为代码,因为它除了指定的服务器之外每个地方都在工作。
修改
同时为网络服务用户设置区域和语言选项可能有助于解决问题。任何人都知道我该怎么办?
答案 0 :(得分:2)
您是否尝试过在web.config中使用全球化代码?这可以防止在多个服务器配置不同(即不同的语言包)时遇到麻烦。
<configuration>
<system.web>
<globalization
culture="en-US"
uiCulture="en-US" />
</system.web>
</configuration>
答案 1 :(得分:1)
在为WAY做了类似的问题后,我在一些线索的帮助下做了以下的事情(也可以在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;
问题解决了。对我来说无论如何。