ASP.NET ReturnURL spécifique de la page de résultats de recherche
J'ai un ASP.net site avec C# backend code. Nous avons les éléments suivants (version abrégée) du code, qui correspond à nos besoins, mais cela pourrait être mieux. C'est sur une page appelée SearchResults.aspx. Si l'utilisateur n'est pas connecté, les liens seront rediriger vers la page de connexion. Si ils sont connectés, il va les rediriger vers une page de recherche pour cet article. Ce que je veux faire est de les rediriger vers l'élément correspondant de la page après l'ouverture de la session si ils cliquent sur le "pas connecté en lien". En quoi aurais-je besoin de fournir le returnURL à la page de connexion? Toute façon je l'ai essayé, il vient de me redirige vers la page par défaut après la connexion.
<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>
Modifier - je suis en utilisant le login par défaut de la structure pour une ASP.net Application Web de modèle, c'est donc tout ce qui est dans la Connexion backend.
protected void Page_Load(object sender, EventArgs e)
{
string returnUrl = Request.QueryString["ReturnUrl"];
RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" +
HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
}
- nous donner le code de connexion réelles qui se passe, c'est à dire - backend code pour la Connexion.aspx
- J'ai compris, mais j'avais utilisé et ASP.net modèle qui inclus la page de connexion. Tout ce qui est dans le backend est la fonction de charge ci-dessus.
- vérifiez les 3 premières lignes de fonction fourni par vous, que pensez-vous effectuer?
- Désolé, redirection par défaut a été ajouté après pour tester autre chose. Avec le chemin que je faisais la redirectURL, il était toujours revenir à la valeur par défaut sans que le code. Cependant, je ne pense pas que je faisais la returnURL correctement car ItemInformation redirige par défaut si la requête a un problème.
- essayez suivantes: 1. déconnexion 2. entrez les critères de recherche page 3. vous êtes redirigé vers la de login, ce qui est dans l'url de cette page?
- Je suis en train de faire cela sur une machine de test, donc voici un exemple d'URL. La façon dont je l'ai eu, le lien de Connexion m'amène à la page de Connexion avec l'url comme ceci localhost:5629/Compte/Login.aspx?returnURL=~/.... Je ne sais pas si je suis censé être le mettre '~/' là, mais il reste dans le Compte de répertoire si je n'ai pas. J'ai vérifié que j'avais supprimé la redirection par défaut, toujours revenir à la valeur par défaut.
- il est préférable d'utiliser seulement
/
au lieu de~/
, mais à y regarder de solution de @Zerkey - il doit travailler, au moins cela montre la bonne direction pour vous
Vous devez vous connecter pour publier un commentaire.
Sur
SearchResults.aspx
Sur
Login.aspx
Login_Click()
était un espace réservé méthode que j'ai nommé pour des raisons de lisibilité. En regardant dans le contrôle de Connexion, leLoggedIn
événement est déclenché lorsque l'utilisateur est authentifié, de sorte que vous mettriez votre redirection logique dans la méthode.Dans un de mes tentatives pour essayer de le faire fonctionner, je ne faisais que tenter d'établir le DestinationPageUrl attribut pour mes asp:contrôle de Connexion. Pour une raison quelconque, il m'a obligé à utiliser à la fois le présent et le OnLoggedIn événement (je n'était pas au courant de cette manifestation existence avant Zerkey l'a fait remarquer). La question de savoir si la marque dans l'URL de retour a également été à l'origine de problèmes, donc voici ce que j'ai fait dans la Connexion.aspx.
Balisage:
Code: