2012-07-23 87 views
5

Estoy escribiendo una aplicación ASP.NET MVC. Soy un principiante, así que estoy seguro de que esto es realmente fácil. Hice referencia al ASP.NET MVC - How to get checkbox values on post pero el código ya no está disponible, por lo que es inútil.Obtener valores de Checkbox en la devolución ASP.NET MVC

Aquí es mi punto de vista:

@using (@Html.BeginForm("Promote", "FPL", FormMethod.Post)) 
{ 
<div data-role="fieldcontain"> 
<fieldset id="PromotionInfo" name="PromotionInfo"> 
<legend><b>@Model.itemType Promotion Details</b></legend> 
    <label for="TargetDate">Target Date: </label> 
    <input type="date" id="TargetDate" data-role="datebox" data-options='{"mode": "flipbox"}' /> 

    <label for="EmailCC">Email cc List: </label> 
    <input type="email" id="EmailCC" /> 

    <div data-role="fieldcontain"> 
    <fieldset data-role="controlgroup"> 
    <legend>Choose Destination Server(s): </legend> 

    @foreach (DataRow server in Model.destinationServerList.Rows) 
    { 
    <label for="@server.ItemArray[0]">@server.ItemArray[1]</label> 
    <input type="checkbox" name="destinationServerSID" id="@server.ItemArray[0].ToString()" /> 
    } 

    </fieldset> 
    </div> 
</fieldset> 

</div> 

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

Y aquí es mi controlador:

public ActionResult Promote(string id) 
    { 
     //Model(item) construction occurs here 

     return View(item); 
    } 

    [HttpPost] 
    public ActionResult Promote(FormCollection collection) 
    { 
     try 
     { 
      string[] test = collection.GetValues("destinationServerSID"); 
     } 
     catch (Exception ex) 
     { 
      return null; 
     } 
    } 

La prueba [] variable contiene una matriz de 2 elementos, los cuales tienen el valor "on" sin embargo , mi lista de artículos es más larga que 2 artículos. Simplemente contiene un "encendido" para cada valor que seleccione, pero no valores "desactivados". Necesito el valor real de la casilla de verificación (el campo de identificación).

Respuesta

3

Los id. No se publican en el servidor. Solo el nombre y el valor se publican en el servidor y solo cuando la casilla de verificación está marcada.

Intente configurar el atributo value con @server.ItemArray[0].ToString().

<input type="checkbox" name="destinationServerSID" value="@server.ItemArray[0].ToString()" /> 
+1

guau, no puedo creer que me haya perdido ... Muchas gracias, eso es todo lo que necesitaba. –

3

El comportamiento predeterminado de la publicación HTML no envía valores para las casillas no marcadas. En su lugar, podría usar el método Html.CheckboxFor, generará todas las entradas necesarias para publicar siempre un valor.

+0

Esto también funcionaría, sin embargo, la respuesta sobre pasarlo como un valor en lugar de una identificación era todo lo que necesitaba. ¡Gracias por responder! –

Cuestiones relacionadas