【发布时间】:2020-03-31 01:04:14
【问题描述】:
我有一个带有 C# 后端代码的 ASP.net 站点。我们有以下(删节的)代码,它适合我们的需要,但它可能会更好。这是在名为 SearchResults.aspx 的页面上。如果用户未登录,链接会将他们重定向到登录页面。如果他们已登录,它会将他们重定向到该项目的查找页面。我想要做的是,如果他们点击“未登录链接”,他们登录后将他们重定向到相应的项目页面。我需要以什么方式将 returnURL 提供给登录页面?我尝试过的每一种方式,它只是在登录后将我重定向到默认页面。
<AnonymousTemplate>
<!--Want to change the link below so that the return URL will take me to
ItemInformation.aspx-->
<%# DataBinder.Eval(Container.DataItem, "itemnumber").ToString().Trim() %><br/>
<asp:HyperLink runat="server" ID="HyperLink1" NavigateUrl='Account/Login.aspx'>
Please login to review information for this item.</asp:HyperLink>
</AnonymousTemplate>
<LoggedInTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#
"~/ItemInformation.aspx?&ItemID=" + DataBinder.Eval(Container.DataItem,
"itemnumber").ToString().Trim() + "&itemdept=" + DataBinder.Eval(
Container.DataItem, "department").ToString()%>'
Text='<%# DataBinder.Eval(Container.DataItem, "itemnumber")%>'>
</asp:HyperLink>
</LoggedInTemplate>
编辑 - 我正在使用 ASP.net Web 应用程序模板的默认登录结构,所以这就是登录后端的全部内容。
protected void Page_Load(object sender, EventArgs e)
{
string returnUrl = Request.QueryString["ReturnUrl"];
RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" +
HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
}
【问题讨论】:
-
为我们提供实际登录发生的代码,即 - Login.aspx 的后端代码
-
我已经包含了它,但是我使用了包含登录页面的 ASP.net 模板。后端就是上面的加载函数。
-
检查你提供的前 3 行函数,你认为它的表现如何?
-
抱歉,默认重定向是在测试其他内容之后添加的。以我执行redirectURL 的方式,它仍然会在没有该代码的情况下恢复为默认值。但是,我认为我没有正确执行 returnURL,因为如果查询字符串有问题,ItemInformation 会重定向到默认值。
-
尝试以下操作:1. 注销 2. 进入搜索页面 3. 你被重定向到登录,这个页面的 url 是什么?