ASP.NET MVC 4 - Перенаправление на ту же страницу после завершения контроллера
На странице у меня есть следующее:
@using (Html.BeginForm("AddEntry", "Configure", FormMethod.Get, new { returnUrl = this.Request.RawUrl }))
{
@Html.TextBox("IP")
@Html.Hidden("TypeId", 1)
<input type="submit" value="@Resource.ButtonTitleAddComponent" />
}
поэтому контроллер вызывается правильно:
public ActionResult AddEntry(string ip, int TypeId, string returnUrl)
{
// Do some stuff
return Redirect(returnUrl);
}
Моя проблема в том, что returnUrl получает значение null и не перенаправляется на ту же страницу, что и контроллер. Идеи?
Использование: ASP.NET MVC 4 Бритва
Ответы
Ответ 1
Вы можете использовать метод Request.QueryString
для получения значений из URL, для образца:
@using (Html.BeginForm("AddEntry", "Configure", FormMethod.Get, null))
{
@Html.TextBox("ip")
@Html.Hidden("TypeId", 1)
@Html.Hidden("returnUrl", this.Request.RawUrl)
<input type="submit" value="@Resource.ButtonTitleAddComponent" />
}
И в вашем контроллере получите его как параметр string returnUrl
.
Ответ 2
вы также можете сделать это, если вам нужно вернуться к чему-то вроде страницы с подробной информацией и вернуться на ту же страницу с запросом:
return Redirect(Request.UrlReferrer.PathAndQuery);
Ответ 3
Вы можете получить URL-адрес ссылки с Request
в контроллере:
public ActionResult AddEntry(string ip, int TypeId, string returnUrl)
{
// Do some stuff
string url = this.Request.UrlReferrer.AbsolutePath;
return Redirect(url);
}
Это перенаправит вас точно на вызывающий URL.
Ответ 4
в вашем классе контроллера используйте Request.UrlReferrer
. Нет необходимости передавать URL-адрес со страницы.
public ActionResult AddEntry(string ip, int TypeId)
{
// Do some stuff
return Redirect(Request.UrlReferrer.ToString());
}
Ответ 5
-
on Получить как Edit(int? id)
ViewBag.RefUrl = Request.UrlReferrer.ToString();
- в представлении
@Html.Hidden("RefUrl");
-
в сообщении Edit(int id,string RefUrl)
return Redirect(RefUrl);