ho link sul mio punto di vista rasoio in questo modo:reindirizzamento per tornare url dopo il login
<a href="Home/Login?ReturnUrl=Disputes/Index"> disputes</a>
dentro il mio metodo di azione di login, sto usando questo:
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();
}
In considerazione Sto usando questo :
@Html.Hidden("returnUrl",@Request.QueryString)
poi nel metodo di azione posta:
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);
}
}
}
si sta reindirizzando a: /Disputes/Index
ma dovrebbe andare a myApp/Disputes/Index
dove l'url con querystring è come questo. /myApp/Home/Login?ReturnUrl=/Disputes/Index
Come posso risolvere questo problema?
prova a utilizzare disputes (con "/") o non provare alcuna stringa di query per testare il metodo UrlReferrer. – Oliver
@Oliver: ho provato senza querystring e non ha funzionato ... – DotnetSparrow