5

2 つのボタンがあり、どちらも asp.net でフォームを送信します。

以下の関数で、どのボタンがクリックされたかを知る必要があります。ログインまたは登録ボタン。そして、その情報をもとに、load イベント内の関数の 1 つをトリガーしたいと考えています。

    protected void Page_Load(object sender, EventArgs e)
{
    AddCountries();
    AddAge();

      if (IsPostBack)
      {
          string pwd = LoginPassword.Text;
          string saltAsBase64 = "z3llWdYSA2DY3M4uNSpOQw==";
          string hash = HashPass.GenerateHash(pwd, saltAsBase64);

          if (Page.IsValid)
          {
              LoginUser(hash);
         /// Depending on what the user pressed..I need to trigger the function 
        // above or below
              RegisterUser(hash);
          }



      }
}

ボタンイベントにこれがあるとどうなりますか:

FormsAuthentication.RedirectFromLoginPage(currentUser.UserName, false);

ボタンイベントの直後にリダイレクトが発生しますか? それとも、そのリダイレクトを無視して、ページ読み込みイベントを再度トリガーしますか?

4

1 に答える 1

5

ボタンがサーバー側のコントロール<asp:button/>である場合、(特定の) ボタンのイベントを処理できます。

protected void Button1_Click(object sender, EventArgs e) {....}

対。

protected void Button2_Click(object sender, EventArgs e) {......}

ASP.Net ページのライフ サイクル Page_Load参照してください。

標準の HTML を使用して同じページに投稿する場合は、コレクション<input type=submit />を調べることができます (これはサーバー側のコントロールでも行うことができます)。Request.Form

アップデート:

  • Page_Loadポストバックで常に発生します
  • クライアント側の検証により、ポストバックが防止されます
  • サーバー検証コントロールを使用している場合は、Page.IsValid何かを実行する前にハンドラーをチェックインしてください
  • 必要に応じて、コントロール/値を検査することもできますPage_Load(チェックPage.IsPostBack- ポイントはオプションがあることです...

したがって、(代わりに)検査したい場合Page_Load

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        if ((UserEmail.Text == "jchen@contoso.com") &&
         (UserPass.Text == "37Yj*99Ps"))
          {
            FormsAuthentication.RedirectFromLoginPage
               (UserEmail.Text, Persist.Checked);
          }
        else
          {
            ......
          }
    }
}

上記のコードは、 MSDNから取得され、わずかに変更されています

更新 2:

サーバー検証コントロールを使用している場合は、使用しないでくださいPage_Load。ボタン ハンドラーを使用して、 を確認しPage.IsValidます。

于 2012-04-28T16:10:48.743 に答える