У меня есть ссылка в моем виде бритвы, как это:
<a href="Home/Login?ReturnUrl=Disputes/Index"> disputes</a>
В методе действия моего логина, я использую это:
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();
}
В представлении я использую это:
@Html.Hidden("returnUrl",@Request.QueryString)
Затем в методе после действия:
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);
}
}
}
Он перенаправляет на: /Disputes/Index
, но он должен перейти на myApp/Disputes/Index
, где URL со строкой запроса похож на это./myApp/Home/Login?ReturnUrl=/Disputes/Index
Как я могу решить эту проблему?