имя действия MVC в URL - PullRequest
       2

имя действия MVC в URL

0 голосов
/ 20 ноября 2011

UPDATE:

Моя модель, входящая в метод сохранения, - это PartialViewModel, который в методе сохранения помещается в индекс ContactViewModel и отправляется обратно. Это было не ясно.

Я играю с MVC3, и у меня есть контроллер контактов с действием SaveDetails. Индекс cshtml имеет частичное с формой, действие которой указывает на этот контроллер.

Когда я отправляю форму, не заполнив ее полностью, тем самым запуская проверку, URL теперь содержит имя действия SaveDetails (http://localhost:7401/Contact/SaveDetails).

Код формы:

@using (Html.BeginForm("SaveDetails", "Contact")) {
    ...
}

Действие контроллера выглядит следующим образом:

public ActionResult SaveDetails(Models.PartialsViewModel pvm)
{
    return View("Index", new ContactViewModel{ PartialsViewModel = pvm } );
}

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2011

Я не думаю, что вы делаете что-то не так, но я не думаю, что вы способны сделать то, что вы пытаетесь достичь. Запрос должен идти куда-то, и в MVC URL-адрес используется для определения, какое действие вы хотите выполнить. Если вы не отправляете сообщение обратно, то URL изменится.

Одним из способов отправки форм для различных действий было бы использование некоторого ajax.

Отправка формы является ПОСТ. Вы можете использовать атрибут, чтобы определить, на какой метод запроса должно реагировать действие. Это означает, что вы можете создать другое действие, также называемое индексом, но присвоить ему атрибут [HttpPost].

[HttpPost]
public ActionResult Index(Models.ContactViewModel cvm)
{
    return View();
}

Таким образом, в URL не будет отображаться действие.

0 голосов
/ 20 ноября 2011

Форма имеет атрибут действия, установленный на действие SaveDetails, поэтому после отправки она перенаправляет браузер на это действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...