这是我第一次来这里,对不起,如果我写错了......
我有这个HTML代码,我需要获取FormCollection中的所有复选框
[HttpPost]
public ActionResult teste2(FormCollection collection)
{
var names = collection.AllKeys.Where(c => c.StartsWith("ckb") &&
collection.GetValue(c) != null &&
collection.GetValue(c).AttemptedValue == "1");
return View();
}
但我只得到这个结果:allKeys string [0]。
我尝试使用Ajax / Jason以及我在网络上找到的其他建议,但我得到了相同的结果。
我没有想到什么是错的。
请帮我! =]
@using (Html.BeginForm())
{
<ul>
@foreach (CWGD.BE.funcionalidade func0 in Model.func.Where(q => q.funcionalidade_pai == null))
{
<li>
<input type="checkbox" name="ckb_@(func0.funcionalidade_id)"/>
@func0.funcionalidade_nome
<ul>
@foreach (var func1 in Model.func.Where(q => q.funcionalidade_pai == func0.funcionalidade_id))
{
<li>
<input type="checkbox" name="ckb_@(func1.funcionalidade_id)"/>
@func1.funcionalidade_nome
<ul>
@foreach (var func2 in Model.func.Where(q => q.funcionalidade_pai == func1.funcionalidade_id))
{
<li>
<input type="checkbox" name="ckb_@(func2.funcionalidade_id)" id="ckb_@(func2.funcionalidade_id)" />
@func2.funcionalidade_nome</li>
}
</ul>
</li>
}
</ul>
</li>
}
</ul>
<input type="submit" value="Save" />
}
答案 0 :(得分:0)
您的第一份工作是启动Fiddler并查看值是否实际发送到服务器。这是一个通用建议,每当出现类似问题时都应该使用。
在您的情况下,问题可能是您的<checkbox>
代码不包含value
属性,因此他们只会向服务器发送一个空值。
此外,您应该向Html.BeginForm
提供参数,以便表单生成正确的目标操作。
还要记住,未检查的复选框永远不会在POST数据中发送到服务器。