Je lien sur mon point de vue de rasoir comme ceci:redirect retourner url après la connexion
<a href="Home/Login?ReturnUrl=Disputes/Index"> disputes</a>
dans ma méthode d'action de connexion, j'utilise ceci:
public ActionResult Login(string returnUrl) {
if (string.IsNullOrEmpty(returnUrl) && Request.UrlReferrer != null)
returnUrl = Server.UrlEncode(Request.UrlReferrer.PathAndQuery);
if (Url.IsLocalUrl(returnUrl) && !string.IsNullOrEmpty(returnUrl))
{
ViewBag.ReturnURL = returnUrl;
}
return View();
}
Vu que je me sers de ce :
@Html.Hidden("returnUrl",@Request.QueryString)
alors en mode d'action de publication:
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (membershipService.ValidateUser(model.UserName, model.Password, model.Type))
{
formsAuthenticationService.SignIn(model.UserName, model.RememberMe);
SetUserInfo(model.UserName);
string decodedUrl = "";
if (!string.IsNullOrEmpty(returnUrl))
decodedUrl = Server.UrlDecode(returnUrl);
if (Url.IsLocalUrl(decodedUrl))
return Redirect(decodedUrl);
else
return Redirect("Home", Index);
}
}
}
il redirige vers: /Disputes/Index
mais il devrait aller à myApp/Disputes/Index
où l'URL avec la chaîne de requête est comme ceci. /myApp/Home/Login?ReturnUrl=/Disputes/Index
Comment puis-je résoudre ce problème?
essayez d'utiliser disputes (avec le "/") ou essayez même pas de chaîne de requête pour tester la méthode UrlReferrer. – Oliver
@Oliver: J'ai essayé sans querystring et cela n'a pas fonctionné ... – DotnetSparrow