重定向(URL)不重定向

时间:2019-04-26 08:43:09

标签: c# url redirect model-view-controller returnurl

.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

2 个答案:

答案 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