質問

ASPは:RangeValidator周り権利文化を取得し、オンラインのページ/スレッドとすべてのアドバイスからの文化情報を取るスレッド上のCultureInfoを設定することのようです。

リックシュトラールの西風のブログは、一般的なアドバイスをする しかし、この方法でサーバのコードを実行している問題のため、我々はこのアドバイスに従って、我々が以前に使用していたコードを除去されます。

私の質問は:私はメインページ/スレッド文化いじりせずにRangeValidatorの文化を設定するための方法があります。私はRangeValidatorsは、ブラウザの設定を尊重したいが、残念ながら、彼らは代わりに、サーバーの文化を尊重されます。

役に立ちましたか?

解決

これに何の答えもなかったように

私は自分の質問に答えるつもりです。

答えはこれがあるとは思われないということであるpossible-直接バリのための文化を設定する方法はありません。

私は英語文化の中で常に実行しているサーバー側のコードを有するが、その後、ブラウザの文化の中で仕事にバリを引き起こす私の目標を達成することができたの仕方はPage_PreRenderの最後でスレッドのCurrentCultureを設定することでした。それはasp.netランタイムがバリデータを設定するためにそれを使用するときのために有効であるためにそのためこれまでの英語文化の中でコードが実行されますが、我々は時間に文化を設定します。

これは、私の場合にはフランスのブラウザ上でユーザーがフランスの形式で数値を入力することができ、バリのcient側アクションの罰金に動作します。あなたが/ポストバックを提出上の検証サーバ側にコードを持っている場合しかし、今フェールそれはポストバックでバリデータの元のカルチャ設定が保持されていないように見える、この検証は、彼らは時の場所で文化を使用します。さらにgotcha-あり時間彼らが検証されているサーバー側:。もちろんフランス語の数字は、その後、有効なものとして見ており、検証が失敗していません。

私はこれが役に立てば幸い同じ問題に遭遇した他の誰

他のヒント

別の(より良い私見)答えはRangeValidatorにインラインサーバコードを使用することです。

<asp:RangeValidator ID="txtLockMaxRangeValidator" runat="server"
     ValidationGroup="templateInfo" ControlToValidate="txtLockMaxFontSize"
     CssClass="validatorTextbox" 
     MinimumValue="<%# (0.01).ToString(System.Globalization.CultureInfo.CurrentUICulture)%>" 
     MaximumValue="9999" Type="Double" Text=">0 and <=9999" 
     ToolTip="<%$ Resources:Resource, TemplateInfo_maxFontValidator %>" 
     Display="Dynamic" />

このリンクにによって示唆された。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top