Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET返回特定搜索结果页面的URL_C#_Asp.net_Login - Fatal编程技术网

C# ASP.NET返回特定搜索结果页面的URL

C# ASP.NET返回特定搜索结果页面的URL,c#,asp.net,login,C#,Asp.net,Login,我有一个带有C#后端代码的ASP.net网站。我们有以下(节略的)代码,它适合我们的需要,但它可以更好。这是一个名为SearchResults.aspx的页面。如果用户未登录,链接会将其重定向到登录页面。如果他们登录,它会将他们重定向到该项目的查找页面。我想要它做的是,如果他们单击“未登录”链接,则在登录后将他们重定向到相应的项目页面。我需要以何种方式向登录页面提供returnURL?我尝试过的每一种方法都只是在登录后将我重定向到默认页面 <AnonymousTemplate>

我有一个带有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>

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属性的页面。发布了解决方案。谢谢你的帮助。