2016-08-04 100 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; 
    } 

這是行動,我試圖通過作爲參數與複選框相同的名稱的數組,但始終爲空。

如果你能幫助我,會很好,因爲我在這個問題上阻塞了一段時間。

+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,但沒有工作,表格爲空。你能告訴我如何重新引導行動? – ATavares

+0

你的目標網址需要是:/ ControllerName/AtualizarValidado。您在控制器中返回null。您需要用真實的操作完成該代碼。您可以運行調試來檢查「表單」的內容。 – Gary

+0

我已經使用了debbuger,表單爲空 – ATavares

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"/> 
} 
相關問題