我正在尝试将视图中的数组中的所有数据传递回控制器。我不确定如何使用我的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)
{
}
答案 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])
}