ASP.NET MVC表单处理未知数量的输入

时间:2010-12-08 15:31:44

标签: asp.net-mvc forms viewmodel

我正在构建一个内部页面,允许受信任的用户通过表单手动更改参数设置。此设置的输入是setupparameters(未知大小)的列表,每个都包含特定的值列表。然后,用户可以为所有参数或子集选择一个值。

我试图用我当前的视图模型来说明这一点

    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 个答案:

答案 0 :(得分:4)

您可以尝试使用FormCollection

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

     return View();
}

答案 1 :(得分:0)

您可能会发现Phil Haack的这篇文章很有用:Model Binding To A List

另请注意,您还需要为每个参数回发一个标识符(例如ParameterName),这样您就可以识别哪个值对应于控制器中的参数。