将回发网址作为属性添加到按钮
本文关键字:属性 添加 按钮 | 更新日期: 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.
}
如果我理解你的问题,当用户单击按钮时,你需要做两件事:
- 呼叫"Button1_Click"
- 发布到"Envia2.apsx"
问题是 1. 本身由当前页面的表单发布组成(您可能知道,ASP.Net 服务器控件为了处理服务器端的事件,会在后台触发回发)。 所以我可以看到几个选项:
- 使用
OnClick
并删除postbackurl
- 在单击处理程序中,重定向到"Envia2.aspx" - 删除
OnClick
和postbackurl
。 相反,进行某种 Ajax 调用以调用"Button1_Click"代码,然后在完成后,在"Button1"所属的窗体上调用form.post()
。