.Net MVC中有一个简单的登录屏幕。成功登录后,我使用Redirect()
方法重定向到给定的url,但是Redirect(url)
找不到任何位置,该页面保留在登录屏幕中。
下面的链接可以正常使用returnurl
:
@Html.ActionLink("Buy","Login","Account",new { returnUrl = Request.RawUrl })
然后在登录屏幕中,returnUrl显示以下URL:
http://localhost:1820/Account/Login?returnUrl=%2FBasket%2FGoToShopCart
未重定向的重定向(url):
[HttpPost]
public ActionResult Login(Login l, string returnurl)
{
RegisteredCustomer rc = new RegisteredCustomer();
string url = "";
Repository r = new Repository();
var obj = r.GetUser(l);
if (obj != null)
{
Session["UserID"] = obj.RegisterID.ToString();
url = returnurl;
}
else
url ="/Account/Login";
return Redirect(url);
}`
然后我在登录视图中将URL传递给HttpPost方法:
`@using (Html.BeginForm("Login", "Account", new { returnUrl = Request.QueryString["ReturnUrl"] }, FormMethod.Post))
{
@Html.Hidden("returnUrl", ViewContext.HttpContext.Request.Url.PathAndQuery)
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
...
<input type="submit" value="Enter" />
}`
也不会重定向此网址:
http://localhost:1820/Account/Login
我已经检查了以下答案,但无济于事:
Redirect to returnURL not working Redirect request to 'ReturnUrl' displays Login Page
答案 0 :(得分:0)
您可以使用return RedirectToAction(“ Login”,“ Account”);
答案 1 :(得分:0)
如我所见,URL需要正确构建。 @NKosi在我相信的https://stackoverflow.com/a/44837491/5770686给出的答案可以为您提供帮助,也可以使用其他重定向方法,例如RedirectToAction,RedirectToRoute等。(https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.controller.redirect?view=aspnet-mvc-5.2)