Как вернуться к тому же URL после нажатия кнопки подтверждения из другого метода ActionResult в одном контроллере с использованием MVC5? - PullRequest
0 голосов
/ 17 февраля 2019

Я хочу, чтобы url оставался таким же, каким он был до нажатия кнопки «Отправить». Я не хочу отображать ActionResult имя метода

Перед выполнением кода нижемой URL был http://localhost/ProjectName/

[HttpPost]
public ActionResult ControllerSignIn(Models.SignIn signin)
{
    ViewBag.name = "John";
    return View("~/Views/Home/Index.cshtml");
}

После выполнения вышеуказанного кода мой URL стал http://localhost/ProjectName/ControllerSignIn/

Я попробовал код нижетакже

[HttpPost]
public ActionResult ControllerSignIn(Models.SignIn signin,string returnUrl)
{
    ViewBag.name = "John";
    return View(returnUrl);
}

код моего частичного просмотра

@using (Html.BeginForm("ControllerSignIn", "Home"))
{
    //.... some text box
    @Html.Hidden("returnUrl", this.Request.RawUrl)
   <input type="submit" class="btn btn-sm btn-primary btn-rounded" value="Login" id="btnLoginSubmit" />
}

Примечание

Моя точка зрениягде пользователь вошел в систему, после того как он вошел в систему, он должен посетить один и тот же URL

1 Ответ

0 голосов
/ 18 февраля 2019

Вы должны понимать, что URL определяет, какой контроллер и какое действие следует выполнить.То, что вы передаете в View (), это не URL, а путь.Этот путь определяет, какое представление должно отображаться ...

// no matter what you put in "SomePath", your URL will remain the same.
return View("SomePath"); 

Если вы хотите изменить URL-адрес на http://localhost/ProjectName/, вам нужно перенаправить на действие этого контроллера:

[HttpPost]
public ActionResult ControllerSignIn(Models.SignIn signin)
{
    ViewBag.name = "John";
    /* return View("~/Views/Home/Index.cshtml"); <-- this has no effect on URL */
    return RedirectToAction("MyController", "MyAction"); // this would take you to a different URL
}

Если вы хотите перенаправить на: http://localhost/ProjectName/ (я предполагаю, что ProjectName является вашим контроллером, и вы хотите перенаправить на действие по умолчанию) ... вам нужно вернуть:

return RedirectToAction("ProjectName"); // redirect to default action of ProjectName controller
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...