С 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.
Я почти уверен, что вы можете публиковать данные формы только из входных данных внутри формы. Рассматривали ли вы рендеринг представления таким образом, чтобы вводимые значения формы создавались вне URL-адреса (возможно, с помощью помощника HTML?).
ОБНОВЛЕНИЕ: Если вы вообще не хотите использовать форму, используйте ControllerContext.RouteData.Values ["idOne"]
вместо того, чтобы передавать его через подпись метода.
Если я правильно понял ваш вопрос, вы хотите, чтобы действие
обработанного элемента
указывало на URL-адрес, содержащий значения маршрута. Это должно быть возможно с помощью одной из перегрузок метода расширения HtmlHelper.BeginForm ()
:
Html.BeginForm("action","controller", new { idOne=1, idTwo=2 }, FormMethod.Post);
Сообщите мне, если я правильно понял ваш вопрос:)