2010-12-08 61 views
3

我正在构建一个允许可信用户通过表单手动更改参数设置的内部页面。此设置的输入是setupparameters(未知大小)的列表,每个列表都有一个特定的值列表。然后用户可以为全部或部分参数选择一个值。处理未知输入数量的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),以便您可以确定哪个值对应于控制器中的参数。