1

OnClickデータベースのテーブルにテキストを保存するボタンがあります。

これはすべて、.NET Framework 4.0asp.netを使用することです。c#

ただし、クリックすると、ボタンがOnClickメソッドを実行する必要があります。現在実行中ですが、別のページに移動して登録を続行することもできます。

登録フォームは約 9 ページです。渡すと別のページ/フォームに移動しますが、メソッドpostbackurl="url"は実行されません。OnClick

<div style="text-align:right; margin-top:20px"><asp:Button ID="Button1" runat="server" ValidationGroup="Curriculum" postbackurl="Envia2.aspx" OnClick="Button1_Click" CssClass="my_btn" /></div>

OnClickでは、この属性をメソッドに「アタッチ」するにはどうすればよいですか?

または、この状況に対する別の回避策がありますか?

前もって感謝します!

4

2 に答える 2

1

あなたの質問を理解した場合、ユーザーがボタンをクリックしたときに次の 2 つのことを行う必要があります。

  1. 「Button1_Click」を呼び出す
  2. 「Envia2.apsx」に投稿

問題は、それ自体が現在のページへのフォーム ポストで構成されていることです (ご存じのとおり、ASP.Net サーバー コントロールは、サーバー側でイベントを処理するために、舞台裏でポストバックをトリガーします)。だから私はいくつかのオプションを見ることができました:

  1. 使用OnClickして削除postbackurl-- クリック ハンドラ内で、「Envia2.aspx」にリダイレクト
  2. OnClickと の両方を削除しpostbackurlます。代わりに、ある種の Ajax 呼び出しを行って「Button1_Click」コードを呼び出し、完了したら、form.post()「Button1」が属するフォームを呼び出します。
于 2013-10-14T16:00:21.350 に答える
1

ボタン クリック イベントは、クライアント側で両方を同時に実行することはできません。サーバーへの送信と別のページへのリダイレクトです。

理想的には、各登録ステップをデータベースに挿入したくないでしょう。代わりに、それらをセッション状態に保存します。次に、最終ページでそれらをデータベースに挿入します。

これが例です。各ステップで検証を確認してください -

public class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string Other { get; set; }
}

// Page1.aspx
<asp:Button runat="server" ID="SubmitButton" Click="SubmitButton_Click"
    Text="Continue to Step 2" />   

// Page1.aspx.cs
protected void SubmitButton_Click(object sender, EventArgs e)
{
    var customer = new Customer
    {
        FirstName = FirstNameTexBox.Text,
        LastName = LastNameTexBox.Text
    };
    Session["Customer"] = customer;

    // Redirect to page 2
    Response.Redirect("Page2.aspx");
}

// Page2.aspx
<asp:Button runat="server" ID="SubmitButton" Click="SubmitButton_Click" 
    Text="Continue to Step 3" />  

// Page2.aspx.cs
protected void SubmitButton_Click(object sender, EventArgs e)
{
    var customer = Session["Customer"] as Customer;
    customer.Address = AddressTextBox.Text;
    Session["Customer"] = customer;

    // Redirect to page 3
    Response.Redirect("Page3.aspx");
}

// Page9.aspx
<asp:Button runat="server" ID="SubmitButton" Click="SubmitButton_Click" 
    Text="Submit" /> 

// Page9.aspx.cs
protected void SubmitButton_Click(object sender, EventArgs e)
{
    var customer = Session["Customer"] as Customer;
    customer.Other = OtherTextBox.Text;

    // Save customer to database.
}
于 2013-10-14T16:07:59.893 に答える