Значения маршрута Html.BeginForm, включая результат переключателя формы - PullRequest
0 голосов
/ 31 октября 2011

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

Мне интересно, можно ли использовать перегрузку 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 ​​в целом помогут мне найти способ сделать это.

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

UPDATE

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

ОБНОВЛЕНИЕ 2

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

1 Ответ

1 голос
/ 31 октября 2011

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

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

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

UPDATE

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

[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.

...