在一个视图中,我有一组映射到List<int>
的复选框。
查看:
<input name="foo.IntegerList" type="checkbox" value="1">
<input name="foo.IntegerList" type="checkbox" value="2">
<input name="foo.IntegerList" type="checkbox" value="3">
<input name="foo.IntegerList" type="checkbox" value="4">
<input name="foo.IntegerList" type="checkbox" value="5">
动作:
[HttpPost]
<public ActionResult DoStuff(Foo foo)
//do stuff
型号:
public class Foo
{
IEnumerable<int> IntegerList
}
将此表单帖子提交到DoStuff操作会为其填充List<int>
。
现在,我必须在另一个视图中使用IntegerList
,并将其作为隐藏字段。在另一个视图中,我使用此代码:
@Html.HiddenFor(p => p.IntegerList)
但是这会转换为以下HTML:
<input name="IntegerList" type="hidden" value="">
请注意,未设置该值。如何让Html.HiddenFor
生成正确的隐藏字段?
答案 0 :(得分:1)
你必须迭代它们,把名字加上索引:
@for(int i = 0; i < Model.IntegerList.Count; i++)
<input name="IntegerList[@i]" type="hidden" value="@Model.IntegerList[i]">
}
使用HiddenFor
,就像这样
@for(int i = 0; i < Model.IntegerList.Count; i++)
@Html.HiddenFor(model => Model.IntegerList[i])
}
答案 1 :(得分:0)
在您的模型中
struct sockaddr *
在您的方法中
public class Foo
{
public string[] IntegerList{ get; set; }
}
这样的隐藏字段
[HttpPost]
public ActionResult DoStuff(Foo foo)
{
if (foo.IntegerList!= null)
string val = String.Join(",", foo.IntegerList);
}
在jquery中
@Html.HiddenFor(p => p.IntegerList , new { @id = "IntegerList"})
<input name="IntegerList" id="IntegerList" type="hidden" value="">
答案 2 :(得分:0)
我知道这很古老,但只想分享对我有用的东西。这是对@adricadar解决方案的修改:
@foreach (var item in Model.MySelections)
{
<input name="MySelections" type="hidden" value="@item" />
}