ASP.NET MVC форма обработки неизвестного количества входов - PullRequest
4 голосов
/ 08 декабря 2010

Я создаю внутреннюю страницу, которая позволяет доверенным пользователям изменять настройку параметров вручную через форму. Входные данные для этой настройки представляют собой список параметров настройки (неизвестного размера), каждый из которых имеет определенный список значений. Затем пользователь может выбрать значение для всех или подмножества параметров.

Я попытался проиллюстрировать это своей текущей моделью для представления

    public class SetupModel
    {
        public List<SetupParameter> Parameters { get; set; }
    }

    public class SetupParameter
    {
        public string ParameterName { get; set; }

        // list with text=paramvalue, value=paramvalueid 
        public SelectList ParameterValueList { get; set; } 
        // id of the selected parametervalue if any
        public int? SelectedParameterValueID { get; set; }
    }

Моя текущая попытка рендеринга вида:

<% using (Html.BeginForm("Update", "Parameters") {%>
...
<% foreach( var parameter in Model.Parameters ) { %>
            <div><%: parameter.ParameterName %></div>
            <div><%: Html.DropDownListFor(x => parameter.SelectedParameterValueID, parameter.ParameterValueList, "Please select") %></div>

<% } %>
...

Мой вопрос заключается в том, как мне отобразить представление, которое позволяет мне отправить форму и получить разумно понятную модель обратно к действию формы, которое позволит мне получить список значений выбранных параметров. Я не знаю о лучших практиках или уловках, поэтому буду благодарен за любые отзывы, которые я получу:)

Ответы [ 2 ]

4 голосов
/ 09 декабря 2010

Вы можете попробовать использовать FormCollection :

public ActionResult Submit(FormCollection formCollection)
{
     //Iterate form collection to get fields

     return View();
}
0 голосов
/ 09 декабря 2010

Фил Хак может найти этот пост полезным: Привязка модели к списку .

Также обратите внимание, что вам необходимо отправить обратно идентификатор (например, ParameterName) для каждого параметра, чтобы вы могли определить, какое значение соответствует параметру обратно в контроллер.

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