Значения маршрута Html.BeginForm, включая результат переключателя формы

За последние пару дней я задал пару вопросов, на которые, вероятно, не было ответа, потому что это могло быть слишком широко. После некоторого исследования я, возможно, немного сузил его.

Мне интересно, есть ли способ использовать перегрузку Html.BeginForm(action,controller,routeValues) формы Begin для передачи результатов RadioButton (т. Е. Пользователь щелкнул один из двух вариантов). Мне нужно, чтобы это значение было передано в строку запроса, чтобы мои действия могли его обработать. Мое действие принимает два параметра, и до сих пор я могу только выяснить, как включить одно из этих значений в действие. Вот пример кода...

<%Html.BeginForm("TemplateInfo","PatientACO",new { PopulationID = ViewData["POPULATIONID"], ActiveAll = "1"});        
%><input type="submit" value="Refresh" id="test" /><%
%></div>
<% Html.EndForm(); %>

Обратите внимание, я устанавливаю свой атрибут ActiveAll автоматически по волшебству. Мне нужно, чтобы он был установлен динамически. IE, это должно быть установлено пользователем. Потому что это конкретное действие принимает два параметра. Нужно найти способ получить динамическое значение в этом действии? Я надеюсь, что словари routeValue или routValues ​​в целом помогут мне найти способ сделать это.

Если у вас есть идеи, как это сделать, я был бы очень признателен.

ОБНОВИТЬ

Я также хотел упомянуть, что я не хочу менять контроллер для принятия FormCollections, потому что это действие вызывается другими методами и представлениями. Есть идеи?

ОБНОВЛЕНИЕ 2

Хорошо, проведя небольшое исследование, я думаю, что я пытаюсь выяснить, как я могу получить значение формы переключателя в представлении, чтобы я мог добавить его в RouteValueDictionary или что-то в этом роде... Любые идеи?

1 ответ

Решение

Вам не нужно передавать выбранные значения в строку запроса.

Пока переключатели имеют имена, равные переменным, которые есть в вашем действии контроллера, MVC будет привязывать значения формы к переменным в вашем действии.

В вашем примере, если ваша форма имеет список переключателей с именем ActionAllи две радиокнопки со значениями true а также falseтогда, если ваше действие контроллера имеет логическую переменную с именем ActionAllрезультаты выбора списка переключателей будут привязаны к переменной ActionAll действия вашего контроллера.

ОБНОВИТЬ

На основании предоставленной вами информации, если ваш метод действия выглядит следующим образом:

[HttpPost]
public ActionResult TemplateInfo(bool ActionAll, ... )

Затем вы можете передать переменную ActionAll из списка кнопок в вашем представлении следующим образом:

<input type="radio" value="true" id="ActionAll" name="ActionAll" /> All
<input type="radio" value="false" selected="selected" id="ActionAll" name="ActionAll" /> Not All

Если вы установите точку останова в своем действии, вы увидите, что ActionAll был установлен на основе выбранной радиокнопки в списке. Если ActionAll не является логическим значением, измените свой список соответствующим образом, чтобы передать правильный тип значения для привязки к ActionAll.

Другие вопросы по тегам