从View返回控制器的值数组

时间:2012-10-10 22:39:16

标签: c# asp.net-mvc asp.net-mvc-3 entity-framework

我正在尝试将视图中的数组中的所有数据传递回控制器。我不确定如何使用我的ViewModel来做到这一点。

模型类

public class ResultsViewModel
{
    public int?[] ProgramIds { get; set; }

}

视图内的表格

@using (Html.BeginForm("ExportCsv", "SurveyResponse", FormMethod.Post))

{

   // Should I be looping through all values in the array here?
    @Html.HiddenFor(x => x.ProgramIds)

    <input type="submit" value="Submit" />
}

控制器我发布到

        [HttpPost]
        public ActionResult ExportCsv(ResultsViewModel ResultsViewModel)
        {

        }

2 个答案:

答案 0 :(得分:3)

我应该循环遍历数组中的所有值吗?

是的,但不要使用@ Html.HiddenFor(..),因为它似乎生成无效的HTML,因为它生成具有相同ID的控件:

<input id="ProgramIds" name="ProgramIds" type="hidden" value="3" />
<input id="ProgramIds" name="ProgramIds" type="hidden" value="4" />

而是循环列表并创建自己的隐藏html字段:

for (var i = 0; i < Model.ProgramIds.Length; i++) 
{ 
    <input type="hidden" name="ProgramIds[@i]" value="@Model.ProgramIds[i]" />
}

Scott Hanselman撰写了一篇关于此事的博客文章: http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx

答案 1 :(得分:1)

Should I be looping through all values in the array here?

是的,试试这个:

for (var i = 0; i < Model.ProgramIds.Length; i++) 
{ 
    @Html.HiddenFor(x => Model.ProgramIds[i]) 
}