0

次の TextBox を含む Web ページがあります。

<asp:TextBox ID="txtSum" runat="server"></asp:TextBox>  

そしてそれを検証するためのcompareValidator:

<asp:CompareValidator ID="CompareValidator1" runat="server" Display="Dynamic" ControlToValidate="txtSum" ErrorMessage="less than 0" ValueToCompare="0" Type="Double" Operator="GreaterThan">  
</asp:CompareValidator>

ページの文化をロシア語に設定すると、比較検証がうまく機能しません。
その理由は、英語とロシア語でフォーマット番号が異なるためです。
次のようにフォーマットを変更しようとしました:

NumberFormatInfo format = CultureInfo.CreateSpecificCulture("en-US").NumberFormat;  
Thread.CurrentThread.CurrentCulture.NumberFormat = format;

しかし、それは機能しません。デバッグでは、カルチャの NumberFormat が変更されていることがわかりますが、ページでは 0 未満のメッセージが表示されます。

どうすれば解決できますか?

4

1 に答える 1

0

あなたが直面している問題は、ブラウザの文化によるものです。ブラウザーの文化はロシア語であり、IIS でのコード実行の文化は英語である可能性があります。ブラウザ文化は常に受け継がれています。インバリアント カルチャを使用して double 値を解析するか、現在の UI カルチャを変更して機能させる必要があります。

protected override void InitializeCulture()
{
    Page.Culture = CultureInfo.CreateSpecificCulture("en-US");
    Page.UICulture = CultureInfo.CreateSpecificCulture("en-US");    
}
于 2014-12-10T07:52:48.933 に答える