ASP.NET MVC - Метод действия POST с дополнительными параметрами от URL

С ASP.net MVC - это возможный к POST форма к действию контроллера, которое включает параметры не в форму, а от URL?

Например,

Метод действия в GroupController:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(int idOne, int idTwo, Model model)
    { ... }

Маршрут:

"{controller}/{action}/{idOne}/{idTwo}"

Отправленный URL:

/Employee/Show/1/42

В этом примере форма отправляется на другой контроллер, модель имеет правильное значение, однако другие параметры имеют значения по умолчанию 0.

Поведение, которое я ожидал, состоит в том, что ModelBinder видел бы, что у меня есть два параметра, которые соответствуют данному маршруту и присваивают текущие значения 1 и 42 к параметрам тем же тем же способом, которым работает ПОЛУЧИТЬ операция.

Разве это поведение не поддерживается, или я пропускаю что-то?

Править: Быть ясным, форма на Show представление для контроллера Employee содержит форму, которая отправляет на другой контроллер. Мы можем назвать его Group.

URL действия формы похож на это

/Groups/Create/0/0

Форма объявляется следующим образом

Html.BeginForm("Create", "Groups")

После попытки многих различных перегрузок для Html.BeginForm Я нашел, что параметры только отображаются, когда URL действия формы соответствует текущему URL на адресной строке браузера.

Таким образом, если я перешел к URL /Groups/Create/1/42 У меня будет новая форма. Если я затем отправляю форму, значения маршрута URL передаются действию POST.

10
задан Karl 18 March 2010 в 13:34
поделиться

2 ответа

Я почти уверен, что вы можете публиковать данные формы только из входных данных внутри формы. Рассматривали ли вы рендеринг представления таким образом, чтобы вводимые значения формы создавались вне URL-адреса (возможно, с помощью помощника HTML?).

ОБНОВЛЕНИЕ: Если вы вообще не хотите использовать форму, используйте ControllerContext.RouteData.Values ​​["idOne"] вместо того, чтобы передавать его через подпись метода.

2
ответ дан 4 December 2019 в 01:30
поделиться

Если я правильно понял ваш вопрос, вы хотите, чтобы действие обработанного элемента

указывало на URL-адрес, содержащий значения маршрута. Это должно быть возможно с помощью одной из перегрузок метода расширения HtmlHelper.BeginForm () :

Html.BeginForm("action","controller", new { idOne=1, idTwo=2 }, FormMethod.Post);

Сообщите мне, если я правильно понял ваш вопрос:)

8
ответ дан 4 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: