如何获取控制器MVC中的复选框值

时间:2016-08-04 14:36:49

标签: asp.net-mvc checkbox

你好第一次在stackoverflow中寻求帮助。我的问题是,如何获得所选复选框的值或模型。

 <dl class="dl-horizontal">
    @foreach (Produto prod in (Model.ProdutosEntrada))
    {
        <dt>
            @Html.DisplayNameFor(model => prod.Designacao)
        </dt>
        <dd>
            @Html.DisplayFor(model => prod.Designacao)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => prod.Descricao)
        </dt>
        <dd>
            @Html.DisplayFor(model => prod.Descricao)
        </dd>
        foreach (EntradaProduto entProd in (Model.EntradaProdutoEscolhida))
        {
            if (prod.CodigodoProduto == entProd.CodigodoProduto)
            {
                <dt>
                    @Html.DisplayNameFor(model => entProd.Quantidade)
                </dt>
                <dd>
                    @Html.DisplayFor(model => entProd.Quantidade)
                </dd>
                <dt>
                    @Html.DisplayNameFor(model => entProd.Validado)
                </dt>
                <dd>
                   <input type="checkbox" name="prodValidados" id="@entProd.CodigodoProduto" value="@entProd.Validado"/>*@
                </dd>
            }
        }

    }
</dl>

这是视图中的代码,我不知道如何重定向到操作并从复选框中捕获值。

  public ActionResult AtualizarValidado(bool[] prodValidados)
    {

        return null;
    }

这是动作,我试图将一个与复选框同名的数组作为参数传递,但始终为null。

如果你能帮助我,会很好,因为我在这个问题上被阻止了一段时间。

2 个答案:

答案 0 :(得分:0)

将您的观点改为:

<dt>
            @Html.DisplayNameFor(model => entProd.Validado)
        </dt>
        <dd>
           @Html.Checkbox("prodValidados")
        </dd>

改变你的控制器:

[HttpPost]
public ActionResult AtualizarValidado(System.Web.Mvc.FormCollection form)
{
    //form["prodValidados"] will return a bool value - checked = true / unchecked = false
    return null;
}    

答案 1 :(得分:0)

这里的关键是,在视图中它需要以一种形式发布到控制器和动作,然后在动作中它需要是string []而不是bool []。这是一个简化的例子,但它应该给你一些想法:

控制器:

public ActionResult AtualizarValidado()
{
    return View();
}

[HttpPost]
public ActionResult AtualizarValidado(string[] prodValidados)
{
    //prodValidados contains the values selected
    return View();
}

观点:

@using (Html.BeginForm())
{
    foreach (var entProd in Model.EntradaProdutoEscolhida)
    {
        @Html.DisplayNameFor(model => entProd.Validado)
        <input type="checkbox" name="prodValidados" value="@entProd.Validado" />
    }

    <input type="submit" value="Submit"/>
}