将回发网址作为属性添加到按钮

本文关键字:属性 添加 按钮 | 更新日期: 2023-09-27 18:35:13

我有一个按钮,它OnClick将一些文本存储到数据库中的表中。

所有这些都asp.net使用c#和.NET Framework 4.0。

但是,我需要在单击时,按钮执行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方法中呢?

还是这种情况还有另一种方式?

提前感谢!

将回发网址作为属性添加到按钮

按钮单击事件不能在客户端同时执行这两个事件 - 提交到服务器并重定向到另一个页面。

理想情况下,您不希望将每个注册步骤插入到数据库中。 相反,您希望将它们存储在会话状态中。然后将它们插入最后一页的数据库。

下面是示例。确保检查每个步骤的验证 -

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.
}

如果我理解你的问题,当用户单击按钮时,你需要做两件事:

  1. 呼叫"Button1_Click"
  2. 发布到"Envia2.apsx"

问题是 1. 本身由当前页面的表单发布组成(您可能知道,ASP.Net 服务器控件为了处理服务器端的事件,会在后台触发回发)。 所以我可以看到几个选项:

  1. 使用OnClick并删除postbackurl - 在单击处理程序中,重定向到"Envia2.aspx"
  2. 删除OnClickpostbackurl。 相反,进行某种 Ajax 调用以调用"Button1_Click"代码,然后在完成后,在"Button1"所属的窗体上调用form.post()