Asp.net MVC ReturnUrl переменная не отображается с методом FormMethod.Post в Html.BeginForm - PullRequest
1 голос
/ 05 февраля 2012

Шаблон по умолчанию в MVC3 устанавливает переменную returnurl в строке запроса на странице входа. Эта страница затем отправляет обратно на контроллер

@using (Html.BeginForm()) {

То есть в контроллере получается вот так

[HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {

Я хотел добавить класс CSS в форму, поэтому я изменил помощник на:

@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { @class = "form-horizontal" }))

Но теперь информация в строке запроса не устанавливается в контроллере.

Я всегда мог установить скрытое входное значение для retrunurl в форме, но я не знал, существует ли более простой способ.

Спасибо

1 Ответ

5 голосов
/ 05 февраля 2012

В этом случае вам необходимо использовать скрытое поле, потому что эта перегрузка не сохраняет исходную строку запроса, которая содержала переменную returnurl. Или, если вы не хотите использовать скрытое поле, вы можете использовать параметр строки запроса:

@using (Html.BeginForm(null, null, new { returnUrl = Request["returnurl"] }, FormMethod.Post, new { @class = "form-horizontal" }))
{
    ...
}
...