1

Asp.net形式のTextBoxがあります。TextBoxの3桁ごとに単純なjavascriptwitchがあります。TextBoxにデータを入力すると正常に機能します。,数字を区切るためにコマを使用.し、浮動小数点文字としてドットを使用しました。

私が言ったように、TextBoxにデータを入力するときはすべてがうまく機能します。ただし、ポストバックが発生して保存されたデータがクライアントに返されると、すべて.が削除されます(たとえば、として2.3保存され、TextBoxの数字はの代わりにで23区切られます。.,

この問題は特定のサーバー(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

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;

問題が解決しました。とにかく私にとって。

于 2011-10-19T15:54:34.617 に答える