2010-12-08 3 views
3

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

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

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> 

<% } %> 
... 

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

ответ

4

Вы можете попробовать с помощью FormCollection:

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

    return View(); 
} 
0

Вы могли бы найти этот пост Фил Хаака полезным : Model Binding To A List.

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

Смежные вопросы