1.3.3 用户自动重定向来源页面
当用户通过页面Login.aspx中的表单成功登录后,将会自动地重定向回其请求的来源页面。另外,CreateUserWizard控件并不能自动地重定向到任何位置。如果你希望CreateUserWizard控件能像Login控件那样工作,则需要编写一定的代码。
代码清单1-19中的Login控件包含了一个用于连接到用户注册页面CreateUserWizard- Returen.aspx上的链接。在Page_Load()事件处理函数中,查询字符串参数ReturnUrl将被添加到该注册页面的链接上。
代码清单1-19 LoginReturn.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string dest = Request.QueryString["ReturnUrl"];
Login1.CreateUserUrl = "~/CreateUserWizardReturn.aspx?ReturnUrl=" + Server.UrlEncode(dest);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Login Return</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Login
id="Login1"
CreateUserText="Register"
CreateUserUrl="~/CreateUserWizardReturn.aspx"
Runat="server" />
</div>
</form>
</body>
</html>
在使用代码清单1-19中的页面之前,需要将该页面重命名为Login.aspx。如果未认证用户访问了需要认证才能访问的页面,那么该用户访问请求就会被自动重定向到页面Login.aspx上,并且ReturnUrl参数也会自动添加到页面Login.aspx的访问路径之后。
代码清单1-20中的页面包含了一个CreateUserWizard控件,以及一个名为Page_Load()的事件处理函数。查询字符串参数ReturnUrl的值用来指定重定向时用户将会返回的原始请求页。
代码清单1-20 CreateUserWizardReturn.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void Page_Load()
{
if (!Page.IsPostBack)
{
string dest = "~/Default.aspx";
if (!String.IsNullOrEmpty(Request.QueryString["ReturnURL"]))
dest = Request.QueryString["ReturnURL"];
CreateUserWizard1.ContinueDestinationPageUrl = dest;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>CreateUserWizard Return</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CreateUserWizard
id="CreateUserWizard1"
Runat="server" />
</div>
</form>
</body>
</html>
From: