【问题标题】:ASP.NET MVC form handling unknown number of inputsASP.NET MVC 表单处理未知数量的输入
【发布时间】:2010-12-08 15:31:43
【问题描述】:

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

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

    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>

<% } %>
...

我的问题是如何呈现允许我提交表单并获得合理可理解的模型返回到我的表单操作的视图,这将允许我获取所选参数值的列表。我不知道这里的最佳实践或技巧,所以我会很感激我得到的任何反馈:)

【问题讨论】:

    标签: asp.net-mvc forms viewmodel


    【解决方案1】:

    您可以尝试使用FormCollection

    public ActionResult Submit(FormCollection formCollection)
    {
         //Iterate form collection to get fields
    
         return View();
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 2012-11-13
        • 2014-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多