1

第一次来,如果写错了请见谅。。。

我有这个 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" />
}
4

1 回答 1

0

您的第一项工作是启动Fiddler并查看这些值是否实际发送到服务器。这是一个通用建议,每次出现任何类似问题时都应使用。

在您的情况下,问题可能是您的<checkbox>标签不包含value属性,因此它们只会向服务器发送一个空值。

您还应该提供参数,Html.BeginForm以便表单生成正确的目标操作。

还要记住,未选中的复选框永远不会在 POST 数据中发送到服务器。

于 2012-11-14T12:47:29.310 回答