MVC FormCollection allKeys字符串[0]

时间:2012-11-14 12:25:21

标签: asp.net-mvc checkbox http-post formcollection

这是我第一次来这里,对不起,如果我写错了......

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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