2016-08-04 22 views
0

こんにちは、こんにちは、初めてstackoverflowでヘルプを求めています。私の質問はこれです、選択したチェックボックスの価値やモデルをどうやって得るのでしょうか?コントローラでチェックボックスの値を取得する方法MVC

<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です。

私がこの問題でしばらくブロックされているので、助けてくれればいいと思います。

+0

あなたの完全な ''

html要素を投稿してください。 – mxmissile

答えて

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; 
}  
+0

awnserに感謝しますが、動作しません。フォームはnullです。あなたは私がその行動にどのように向き合うことができるか教えてくれますか? – ATavares

+0

ターゲットURLは/ ControllerName/AtualizarValidadoにする必要があります。あなたはコントローラでnullを返しています。真の行動でそのコードを完成させる必要があります。デバッグで "form"の内容を調べることができます。 – Gary

+0

私はdebbugerを使用していましたが、フォームはnullです – ATavares

0

ここで重要な物事がどのポスト、それが形にする必要がありますビューで、ありますコントローラーとアクションでは、アクションではbool []ではなくstring []にする必要があります。ここでは単純化した例であるが、それはあなたにいくつかのアイデアを与える必要があります。

コントローラ:

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"/> 
} 
関連する問題