net mvc example checkboxes asp c# asp.net asp.net-mvc asp.net-mvc-4 checkbox

c# - example - checkbox mvc model



Pase los valores de checkBox a la acción del controlador en asp.net mvc4 (11)

Quiero probar si la casilla de verificación está marcada o no en mi metión de ación, lo que necesito es pasar el valor de la casilla de verificación de la vista al controlador

esta es mi opinión

@using (Html.BeginForm("Index", "Graphe")) { <table style="width: 100%;" border="1"> <tbody> <tr> <td>Responsable:</td> <td><select id="Responsables" name="responsables" ><option>Selectionnez --</option></select></td> <td><input id="responsable" name="checkResp" type="checkbox" /> </td> </tr> <tr> <td><input type="submit" value="Afficher" id="ButtonSubmit"/></td> <td><input class="button" id="ButtonReset" type="button" value="Annuler" /></td> </tr> </tbody>

y lo intento:

public ActionResult Index( string responsables, bool checkResp) { Highcharts chart = new Highcharts("chart"); if (responsables != null) { if (checkResp) chart = Global(); else chart = Resp(responsables); } else chart = Global(); return View(chart); }

, pero tengo este error:

Nict pour le paramètre «checkAct» de type Non Nullable «System.Boolean» pour la méthode «System.Web.Mvc.ActionResult Index (System.String, System.String, Boolean)» dans «Project .Controllers.GrapheController ». Un paramètre facultatif doit être un type référence, un Type Nullable ou être déclaré en tant que paramètre facultatif. Nom du paramètre: parámetros

Puedes ayudarme por favor !


Debes estar escribiendo fuertemente tus puntos de vista. Entonces puedes hacer esto:

public class YourViewModel { public bool ConditionaValue { get; set; } }

En su opinión, puede crear una casilla de verificación que se vinculará a este valor booleano:

@Html.CheckBoxFor(x => x.ConditionalValue)

Si está marcada, la propiedad del modelo será verdadera.

Sin embargo, para su problema inmediato ... debe nombrar su casilla de verificación para que tenga el mismo nombre que los parámetros de su método de acción ... y deben ser bool ...


Ninguna de las soluciones anteriores funcionó para mí. Finalmente encontré que la acción debería ser codificada como ...

public ActionResult Index(string MyCheck = null)

y luego, cuando se verificó, el valor pasado estaba "activado", no "verdadero". Si no, siempre es nulo.

Espero que ayude a alguien.


Para el método del controlador MVC, use un tipo booleano anulable:

Índice de ActionResult público (cadenas responsables, bool? checkResp) {etc.}

Luego, si la casilla de verificación está marcada, checkResp será verdadero. Si no, será nulo.


Por alguna razón, el método Andrew de crear la casilla de verificación a mano no me funcionó con Mvc 5. En lugar de eso, utilicé

@Html.CheckBox("checkResp")

para crear una casilla de verificación que jugaría bien con el controlador.


Si desea que el controlador MVT lea su valor cuando envíe el formulario y no sabe qué hacer con las entradas ocultas. Lo que puede hacer es agregar un atributo de value a su checkbox y establecerlo en true o false .

MVT no reconocerá la propiedad de myCheckbox como verdadera aquí

<input type="checkbox" name="myCheckbox" checked="checked" />

pero si lo añades

<input type="checkbox" name="myCheckbox" checked="checked" value="true" />

Script que lo hace:

$(document).on("click", "[type=''checkbox'']", function(e) { if (this.checked) { $(this).attr("value", "true"); } else { $(this).attr("value","false");} });


Si se marca una casilla de verificación, los valores de devolución contendrán un par clave-valor de la forma [InputName]=[InputValue]

Si una casilla de verificación no está marcada, entonces el formulario publicado no contiene ninguna referencia a la casilla de verificación.

Sabiendo esto, funcionará lo siguiente:

En el código de marcado:

<input id="responsable" name="checkResp" value="true" type="checkbox" />

Y tu firma del método de acción:

public ActionResult Index( string responsables, bool checkResp = false)

Esto funcionará porque cuando la casilla de verificación está marcada, la devolución de datos contendrá checkResp=true , y si la casilla de verificación no está marcada, el parámetro por defecto será false.


Tuve un problema con la mayoría de las soluciones, ya que estaba tratando de usar una casilla de verificación con un estilo específico. Necesitaba los valores de la casilla de verificación para enviarlos a una publicación de una lista, una vez que se recopilaron los valores, se necesitaba guardarla. Me las arreglé para trabajar alrededor de un rato.

Espero que ayude a alguien. Aquí está el código de abajo:

Controlador:

[HttpGet] public ActionResult Index(List<Model> ItemsModelList) { ItemsModelList = new List<Model>() { //example two values //checkbox 1 new Model{ CheckBoxValue = true}, //checkbox 2 new Model{ CheckBoxValue = false} }; return View(new ModelLists { List = ItemsModelList }); } [HttpPost] public ActionResult Index(ModelLists ModelLists) { //Use a break point here to watch values //Code... (save for example) return RedirectToAction("Index", "Home"); }

Modelo 1:

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace waCheckBoxWithModel.Models { public class Model { public bool CheckBoxValue { get; set; } } }

Modelo 2:

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace waCheckBoxWithModel.Models { public class ModelLists { public List<Model> List { get; set; } } }

Ver (Índice):

@{ ViewBag.Title = "Index"; @model waCheckBoxWithModel.Models.ModelLists } <style> .checkBox { display: block; position: relative; margin-bottom: 12px; cursor: pointer; font-size: 22px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } /* hide default checkbox*/ .checkBox input { position: absolute; opacity: 0; cursor: pointer; } /* checkmark */ .checkmark { position: absolute; top: 0; left: 0; height: 25px; width: 25px; background: #fff; border-radius: 4px; border-width: 1px; box-shadow: inset 0px 0px 10px #ccc; } /* On mouse-over change backgroundcolor */ .checkBox:hover input ~ .checkmark { /*background-color: #ccc;*/ } /* background effect */ .checkBox input:checked ~ .checkmark { background-color: #fff; } /* checkmark (hide when not checked) */ .checkmark:after { content: ""; position: absolute; display: none; } /* show checkmark (checked) */ .checkBox input:checked ~ .checkmark:after { display: block; } /* Style checkmark */ .checkBox .checkmark:after { left: 9px; top: 7px; width: 5px; height: 10px; border: solid #1F4788; border-width: 0 2px 2px 0; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } </style> @using (Html.BeginForm()) { <div> @{ int cnt = Model.List.Count; int i = 0; } @foreach (var item in Model.List) { { if (cnt >= 1) { cnt--; } } @Html.Label("Example" + " " + (i + 1)) <br /> <label class="checkBox"> @Html.CheckBoxFor(m => Model.List[i].CheckBoxValue) <span class="checkmark"></span> </label> { i++;} <br /> } <br /> <input type="submit" value="Go to Post Index" /> </div> }


establecer el valor en la casilla de verificación como esta:

<input id="responsable" name="checkResp" value="true" type="checkbox" />

cambie checkResp a propiedad anulable en su modelo como este:

public Nullable<bool> checkResp{ get; set; }

utilizar ? antes de checkResp como:

public ActionResult Index( string responsables, bool ? checkResp) { ...... }


intenta usar la colección de formularios

<input id="responsable" value="True" name="checkResp" type="checkbox" /> [HttpPost] public ActionResult Index(FormCollection collection) { if(!string.IsNullOrEmpty(collection["checkResp"]) { string checkResp=collection["checkResp"]; bool checkRespB=Convert.ToBoolean(checkResp); } }


public ActionResult Save(Director director) { // IsActive my model property same name give in cshtml //IsActive <input type="checkbox" id="IsActive" checked="checked" value="true" name="IsActive" if(ModelState.IsValid) { DirectorVM ODirectorVM = new DirectorVM(); ODirectorVM.SaveData(director); return RedirectToAction("Display"); } return RedirectToAction("Add"); }


<form action="Save" method="post"> IsActive <input type="checkbox" id="IsActive" checked="checked" value="true" name="IsActive" /> </form> public ActionResult Save(Director director) { // IsValid is my Director prop same name give if(ModelState.IsValid) { DirectorVM ODirectorVM = new DirectorVM(); ODirectorVM.SaveData(director); return RedirectToAction("Display"); } return RedirectToAction("Add"); }