我正在构建一个内部页面,允许受信任的用户通过表单手动更改参数设置。此设置的输入是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>
<% } %>
...
我的问题是如何渲染一个视图,允许我提交表单并获得一个合理可理解的模型回到我的表单操作,这将允许我获取所选参数值的列表。我不知道这里的最佳做法或技巧,所以我将非常感谢我得到的任何反馈:)
答案 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
),这样您就可以识别哪个值对应于控制器中的参数。