我有一个按钮,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
方法?
或者这种情况还有另一种解决方法吗?
提前致谢!
答案 0 :(得分:1)
如果我理解你的问题,当用户点击按钮时你需要做两件事:
问题在于1.本身由当前页面的表单发布(如您所知,ASP.Net服务器控件,为了处理服务器端的事件,在幕后触发回发)。所以我可以看到一些选择:
OnClick
并删除postbackurl
- 在点击处理程序中,重定向到“Envia2.aspx”OnClick
和postbackurl
。相反,进行某种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.
}