C# ASP.NET返回特定搜索结果页面的URL
我有一个带有C#后端代码的ASP.net网站。我们有以下(节略的)代码,它适合我们的需要,但它可以更好。这是一个名为SearchResults.aspx的页面。如果用户未登录,链接会将其重定向到登录页面。如果他们登录,它会将他们重定向到该项目的查找页面。我想要它做的是,如果他们单击“未登录”链接,则在登录后将他们重定向到相应的项目页面。我需要以何种方式向登录页面提供returnURL?我尝试过的每一种方法都只是在登录后将我重定向到默认页面C# ASP.NET返回特定搜索结果页面的URL,c#,asp.net,login,C#,Asp.net,Login,我有一个带有C#后端代码的ASP.net网站。我们有以下(节略的)代码,它适合我们的需要,但它可以更好。这是一个名为SearchResults.aspx的页面。如果用户未登录,链接会将其重定向到登录页面。如果他们登录,它会将他们重定向到该项目的查找页面。我想要它做的是,如果他们单击“未登录”链接,则在登录后将他们重定向到相应的项目页面。我需要以何种方式向登录页面提供returnURL?我尝试过的每一种方法都只是在登录后将我重定向到默认页面 <AnonymousTemplate>
<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>
在
SearchResults.aspx上
if (!Request.IsAuthenticated)
{
Response.Redirect("/Login.aspx/?ReturnURL="+HttpContext.Current.Request.Url.AbsoluteUri); // dont forget to use urlencode
}
protected void Login_Click()
{
if (Request.QueryString["ReturnURL"] != null)
{
Response.Redirect(Request.QueryString["ReturnURL"]);
}
else
{
Response.Redirect("/Home.aspx");
}
}
在Login.aspx上
if (!Request.IsAuthenticated)
{
Response.Redirect("/Login.aspx/?ReturnURL="+HttpContext.Current.Request.Url.AbsoluteUri); // dont forget to use urlencode
}
protected void Login_Click()
{
if (Request.QueryString["ReturnURL"] != null)
{
Response.Redirect(Request.QueryString["ReturnURL"]);
}
else
{
Response.Redirect("/Home.aspx");
}
}
在我尝试让它工作的一次尝试中,我只尝试为我的asp:Login控件设置DestinationPageUrl属性。出于某种原因,它要求我同时使用这个事件和OnLoggedIn事件(在Zerkey指出之前,我不知道这个事件的存在)。返回URL中的附加问号也导致了问题,下面是我在Login.aspx中所做的
标记:
<asp:Login ID="LoginUser" runat=server" EnableViewState="false"
RenderOuterTable="false" OnLoggedIN="UserLoginOnLoggedIn">...</asp:Login>
给我们实际登录发生的代码,ie-login.aspxI的后端代码已经包括在内,但我使用了和ASP.net模板,其中包括登录页面。后端中的所有内容都是上面的加载函数。请检查您提供的前3行函数,您认为它的性能如何?抱歉,默认重定向是在测试其他内容后添加的。按照我做重定向URL的方式,在没有代码的情况下,它仍然返回默认值。但是,我认为我没有正确执行returnURL,因为如果查询字符串出现问题,ItemInformation会重定向到默认值。注销2。进入搜索页面3。你被重定向到登录,这个页面的url是什么?好吧,就像一个虚拟的,我甚至没有想过使用完整路径而不是相对路径,所以这看起来更有希望。但是,当我添加Login\u Click事件处理程序时,它将导致它无法登录。如果不继续这样做,则会重定向到主页。登录页面正在使用验证组和asp:login控件,但我看不到成功登录页面的设置位置。我个人不使用登录控件Login\u Click()
是我为可读性而命名的占位符方法。查看登录控件,在用户经过身份验证后会引发LoggedIn
事件,因此您可以将重定向逻辑放入该方法中。明白了。需要那个事件…在我最初的一次尝试中,我试图只依赖DestinationPageUrl属性,这将适用于其他页面,但不适用于具有其他querystring属性的页面。发布了解决方案。谢谢你的帮助。