我有一个.aspx页面,其page_load如下:
protected void Page_Load(object sender, EventArgs e)
{
if (HttpContext.Current.User.Identity.Name != "")
{
....
}
else
{
FormsAuthentication.RedirectToLoginPage();
return;
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
....
}
我注意到的问题是,当用户单击提交按钮时,它会通过Page_Load
(通过其他方式),然后尝试运行受保护的void btnSubmit_Click(object sender, EventArgs e)
。
有没有办法让它重定向到登录页面而不是继续下一个空白?
答案 0 :(得分:2)
这是 NOT 问题。这是正常的ASP.NET Page Life Cycle。
在Page_Load
事件发生后立即控制事件。
请注意,FormsAuthentication.RedirectToLoginPage方法不会通过调用HttpResponse.End
来结束请求。这意味着将运行RedirectToLoginPage方法调用之后的代码。
答案 1 :(得分:0)
假设您要停止Page_Load
内的进一步处理(我相信是您的意图return
):
protected void Page_Load(Object sender, EventArgs e)
{
if (/*I want to kill processing*/)
{
// Method one:
Response.End(); // Though admittedly ugly
// Method two:
this.Context.ApplicationInstance.CompleteRequest();
return; // return as normal (short-circuit)
}
}