gpt4 book ai didi

asp.net-mvc-3 - 由于某种原因,asp.net mvc 中的 ReturnUrl 为 null

转载 作者:行者123 更新时间:2023-12-02 09:36:30 30 4
gpt4 key购买 nike

public ActionResult LogOn(string returnUrl)
{
if (Request.IsAuthenticated)
{
return RedirectToAction(string.Empty, "home");
}
else
{
if (!string.IsNullOrWhiteSpace(returnUrl))
{
//http://localhost:666/en-us/account/logon?returnurl=%2fen-us%2fadminka
//..............
}
return View();

}
}

[HttpPost]
public ActionResult LogOn(LogOnViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (....)
{
//..............
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
return Redirect(returnUrl);
return RedirectToAction(string.Empty, "home");

}
else
{
//..............
}
}

return View(model);
}

HttpPost LogOn 中,returnUrl 始终等于 null,即使在 HttpGet LogOn为 null。

为什么?我该如何修复它?

最佳答案

您需要将 returnUrl 与表单帖子一起发布。

可能最干净的解决方案是将 returnUrl 作为属性添加到 LogOnViewModel:

    public class LogOnViewModel
{
public string UserName { get; set; }
public string Password { get; set; }
public string ReturnUrl { get; set; }
}

您的 get 方法将设置该值:

[HttpGet]
public ActionResult LogOn(string returnUrl)
{
// code for already authenticated case left out for demo
var model = new LogOnViewModel { ReturnUrl = returnUrl };
return View(model);

}
}

在您的表单中,您可以将该值保留为隐藏字段:

@using (Html.BeginForm())
{
@Html.HiddenFor(model => model.ReturnUrl)

// rest of form code left out for demo purposes
}

然后您的 post 方法将可以访问该值:

    [HttpPost]
public ActionResult LogOn(LogOnViewModel model)
{
if (ModelState.IsValid)
{
if (....)
{ string returnUrl = model.ReturnUrl;

//..............
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
return Redirect(returnUrl);
return RedirectToAction(string.Empty, "home");

}
else
{
//..............
}
}

return View(model);
}

关于asp.net-mvc-3 - 由于某种原因,asp.net mvc 中的 ReturnUrl 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9463079/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com