2

C# (.NET 2.0) のレガシー プロジェクトを使用しています。このプロジェクトには、2 つの検証グループがあります。1 つはカスタム ログイン コントロール用で、もう 1 つはユーザーがニュースレターに送信するためのものです。私が遭遇した問題は、ユーザーがニュースレターを購読するために送信すると、ユーザーがログインしようとしたときにのみトリガーされる必要がある page_prerender() メソッドでカスタム コードがトリガーされることです。

必要に応じてカスタム コードを無視できるように、2 つのグループのどちらがポストバックで使用されているかを認識するソリューションを探していました。私の考えは、2 つの検証グループのどちらが検証に使用されているかを確認することでした。残念ながら、グーグルで無駄な数時間を費やした後、検証時にどの検証グループが使用されているかを実際に知る方法を知る方法を見つけることができませんでした。調べる方法はありますか?

<asp:Button ID="btn_newsletter" 
            runat="server" 
            Text="Verzend" 
            ValidationGroup="newsLetter" 
            meta:resourcekey="bnt_newsletter"
            OnClick="handleNewsLetter"
            CssClass="roundedButtonBig" 
 />


<asp:Button ID="LoginButton" 
            runat="server" 
            CommandName="Login" 
            Text="Inloggen" 
            ValidationGroup="lgnUser" 
            meta:resourcekey="LoginButtonResource1" 
            CssClass="roundedButtonBig" 
 />

次のコードは、LoginButton が押されたときにのみトリガーする必要があり、Pre_render() で実行する必要があります。または、代わりに正しい ValidationGroup を渡します (ここでは null が渡されます)。

protected void Page_PreRender(object sender, EventArgs e)
{

    //Register custom ValdiationErrorService added errors to JavaScript so they can be added into the popup.
    ValidationErrorService.RegisterServerValidationMessageScript(Page, null);

}
4

1 に答える 1

0

どの検証グループが有効かを確認するには、次を呼び出します。

Page.Validate(“newLetter”);

次にチェック

Page.IsValid;

これは値を返します。Scott Gu のブログに詳細があります

また、 prerenderイベント内でどのボタンがクリックされたかを知りたい場合も同様です。ページ prerender に渡されたパラメーターからそれを見つけることはできませんが、page_prerender イベントの前に発生するボタン イベントに頼ることができます。aspx ページのコード ビハインド内で、メンバー変数を作成します。この変数は、レンダリング前のロジックを実行する必要があるかどうかを示すために使用されます。

次に、2 つのボタンのクリック イベント内で、そのボタンが page_prerender イベントで必要なロジックを起動する必要があるかどうかを示すローカル変数を設定します。

最後に、page_prerender メソッド内のローカル変数を確認し、新しいメンバー変数に基づいて if ステートメント内にロジックをカプセル化します。

ハッピートレイル!

于 2011-06-14T13:06:07.917 に答える