2016-08-04 22 views
0

Hallo ersten Mal um Hilfe in Stackoverflow fragen. Meine Frage ist, wie bekomme ich den Wert oder das Modell des ausgewählten Kontrollkästchens.Wie kann ich die Checkbox Wert in der Steuerung 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> 

Dies ist der Code in der Ansicht, ich weiß nicht, wie man die Aktion umleiten und die Werte der Kontrollkästchen fangen.

public ActionResult AtualizarValidado(bool[] prodValidados) 
    { 

     return null; 
    } 

Dies ist die Aktion, i als Argument ein Array mit dem gleichen Namen wie das Kontrollkästchen passieren versucht, aber ist immer null.

Wenn Sie mir helfen könnten, wird nett sein, da ich in diesem Problem für eine Weile blockiert ist.

+0

Bitte senden Sie Ihre vollständigen ''

html-Element. – mxmissile

Antwort

0

Passen Sie Ihre Ansicht:

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

Passen Sie Ihre Controller als solche:

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

Danke für den Awnser, aber funktioniert nicht, die Form ist null. Kannst du mir sagen, wie kann ich direkt auf die Aktion reagieren? – ATavares

+0

Ihre Ziel-URL muss lauten:/ControllerName/AtualizarValidado. Sie geben null in der Steuerung zurück. Sie müssen diesen Code mit einer echten Aktion vervollständigen. Sie können in debug ausführen, um den Inhalt von "Formular" zu untersuchen. – Gary

+0

Ich hatte das Debbuger verwendet und das Formular ist Null – ATavares

0

Die wichtigsten Dinge hier sind, in der Ansicht in einer Form zu sein, braucht es, die Beiträge zu den Controller und Aktion, dann muss in der Aktion string [] statt bool [] sein. Hier ist ein vereinfachtes Beispiel, aber es sollte Ihnen ein paar Ideen:

Der Controller:

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

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

Aussicht:

@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"/> 
}