我有两个按钮,它们都在 asp.net 中提交表单。
我需要知道下面的功能..单击了什么按钮..登录或注册按钮。通过该信息,我想触发加载事件中的函数之一。
protected void Page_Load(object sender, EventArgs e)
{
AddCountries();
AddAge();
if (IsPostBack)
{
string pwd = LoginPassword.Text;
string saltAsBase64 = "z3llWdYSA2DY3M4uNSpOQw==";
string hash = HashPass.GenerateHash(pwd, saltAsBase64);
if (Page.IsValid)
{
LoginUser(hash);
/// Depending on what the user pressed..I need to trigger the function
// above or below
RegisterUser(hash);
}
}
}
如果我在按钮事件中有这个怎么办:
FormsAuthentication.RedirectFromLoginPage(currentUser.UserName, false);
重定向会在按钮事件之后立即发生吗?或者它会再次触发页面加载事件,忽略该重定向吗?
最佳答案
如果按钮是服务器端控件 <asp:button/>
然后您可以处理(特定)按钮的事件:
protected void Button1_Click(object sender, EventArgs e) {....}
对比
protected void Button2_Click(object sender, EventArgs e) {......}
之后提出的 Page_Load
请参阅:ASP.Net Page Life Cycle
如果您使用标准 HTML <input type=submit />
并发回同一页面,然后您可以检查 Request.Form
集合(您也可以使用服务器端控件来完成)。
更新:
-
Page_Load
总是在回发时引发 - 客户端验证将阻止回发
- 如果您正在使用服务器验证控件,请检查
Page.IsValid
在执行某些操作之前在处理程序中 - 根据您的需要,您还可以检查
Page_Load
中的控件/值(检查Page.IsPostBack
- 重点是你有选择......
因此,如果您(相反)想检查 Page_Load
:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
if ((UserEmail.Text == "jchen@contoso.com") &&
(UserPass.Text == "37Yj*99Ps"))
{
FormsAuthentication.RedirectFromLoginPage
(UserEmail.Text, Persist.Checked);
}
else
{
......
}
}
}
以上代码取自 MSDN,并稍加修改
更新2:
如果您正在使用服务器验证控件,请勿使用 Page_Load
。使用按钮处理程序并检查 Page.IsValid
.
关于asp.net - 在asp.net中提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10365173/