ASP.NET LoginUser.DestinationPageUrl无法正常工作

Duk*_*hoo 6 asp.net login-control

HTML就像:

  <asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false" OnLoggedIn="LoginUser_LoggedIn"
                    OnLoginError="LoginUser_LoginError">
</asp:Login>
Run Code Online (Sandbox Code Playgroud)

LoginUser_LoggedIn事件我正在设置目标URL,如:

LoginUser.DestinationPageUrl = "~/mycustompage.aspx";
FormsAuthentication.RedirectFromLoginPage(LoginUser.UserName, true);
Run Code Online (Sandbox Code Playgroud)

这里当ReturnUrl页面URL中没有,那么它将重定向到"〜/ mycustompage.aspx"页面,但如果在URL中指定了任何ReturnUrl,则它将重定向到ReturnUrl页面.

无论ReturnUrl是否存在,我总是想重定向到"〜/ mycustompage.aspx"页面.怎么做到这一点?

非常感谢提前!

Ema*_*eco 5

DestinationPageUrl 是登录后的默认目标页面。

?ReturnUrlDestinationPageUrl这样强,如果设置它就赢了。

Response.RedirectinLoginUser_LoggedInReturnUrlso强,如果你想覆盖ReturnUrl 你必须使用这个代码:

 void LoginUser_LoggedIn(Object sender, EventArgs e)
    {
      Response.Redirect("~/mycustompage.aspx");
      ....
    }
Run Code Online (Sandbox Code Playgroud)

DestinationPageUrl 应该在aspx页面中设置

 <asp:Login DestinationPageUrl="~/mycustompage.aspx" ... />
Run Code Online (Sandbox Code Playgroud)

或在 Page_Load事件正常工作。

void PageLoad(Object sender, EventArgs e)
    {
      LoginUser.DestinationPageUrl = "~/mycustompage.aspx";
      ....
    }
Run Code Online (Sandbox Code Playgroud)

如果您必须在登录后更改目标页面(例如,如果页面根据用户或用户的角色而变化),则必须使用Server.trasfer()ore Response.Redirect()

void LoginUser_LoggedIn(Object sender, EventArgs e)
    {
      Response.Redirect("~/mycustompage.aspx");
      ....
    }
Run Code Online (Sandbox Code Playgroud)