将postbackurl作为属性添加到按钮

时间:2013-10-14 15:50:00

标签: c# jquery asp.net .net sql-server

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

使用asp.net和.NET Framework 4.0在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方法?

或者这种情况还有另一种解决方法吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

  1. 致电“Button1_Click”
  2. 发布到“Envia2.apsx”
  3. 问题在于1.本身由当前页面的表单发布(如您所知,ASP.Net服务器控件,为了处理服务器端的事件,在幕后触发回发)。所以我可以看到一些选择:

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

答案 1 :(得分: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.
}