Passa i valori di checkBox all’azione del controller in asp.net mvc4

Voglio verificare se la casella di controllo è selezionata o meno dal mio metodo di acquisizione, quello che mi serve è passare il valore della casella di controllo dalla vista al controller

questa è la mia opinione

@using (Html.BeginForm("Index", "Graphe")) { 

e provo questo:

  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); } 

, ma ho questo errore:

Le definizioni dei parametri per un ingresso Null pour le paramètre «checkAct» di tipo non Nullable «System.Boolean» pour la méthode «System.Web.Mvc.ActionResult Index (System.String, System.String, Boolean)» dans «Progetto .Controllers.GrapheController ». Un paramètre facultatif doit être un type référence, un tipo Nullable ou déclaré en tant que paramètre facultatif. Nom du paramètre: parametri

Mi potete aiutare per favore !

Se una casella è selezionata, i valori di postback conterranno una coppia valore-chiave del modulo [InputName]=[InputValue]

Se una casella di controllo non è selezionata, il modulo pubblicato non contiene alcun riferimento alla casella di controllo.

Sapendo questo, il seguente funzionerà:

Nel codice di markup:

   

E la tua firma del metodo di azione:

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

Questo funzionerà perché quando la casella di controllo è selezionata, il postback conterrà checkResp=true , e se la casella di controllo non è selezionata, il parametro verrà impostato su false.

Per qualche ragione, il metodo Andrew di creare la casella di controllo a mano non ha funzionato con me usando Mvc 5. Invece l’ho usato

 @Html.CheckBox("checkResp") 

per creare una casella di controllo che sarebbe piacevole con il controller.

prova a utilizzare la raccolta moduli

  [HttpPost] public ActionResult Index(FormCollection collection) { if(!string.IsNullOrEmpty(collection["checkResp"]) { string checkResp=collection["checkResp"]; bool checkRespB=Convert.ToBoolean(checkResp); } } 

Se desideri che il tuo valore venga letto dal controller MVT quando invii il modulo e non sai cosa gestire gli input nascosti. Quello che puoi fare è aggiungere un attributo value alla tua checkbox e impostarlo su true o false .

MVT non riconosce la proprietà myCheckbox come vera qui

ma lo farò se aggiungerai

Script che lo fa:

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

Nessuna delle precedenti soluzioni ha funzionato per me. Alla fine ho scoperto che l’azione dovrebbe essere codificata come …

 public ActionResult Index(string MyCheck = null) 

e quindi, se selezionato, il valore passato era “on”, non “true”. Altrimenti, è sempre nullo.

Spero che aiuti in qualche modo.

Dovresti scrivere fortemente le tue visualizzazioni. Quindi puoi fare questo:

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

Nella tua vista, puoi creare una casella di controllo che si legherà a questo valore booleano:

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

Se è selezionato, la proprietà del modello sarà vera.

Per il tuo problema immediato però .. devi dare un nome alla casella di controllo per avere lo stesso nome dei parametri del tuo metodo di azione .. e dovrebbero essere bool ..

Ho avuto un problema con la maggior parte delle soluzioni, dal momento che stavo cercando di utilizzare una casella di controllo con uno stile specifico. Avevo bisogno dei valori della casella di controllo per inviarli al post da un elenco, una volta che i valori sono stati raccolti, necessari per salvarlo. Sono riuscito a farlo funzionare dopo un po ‘.

Spero che aiuti qualcuno. Ecco il codice qui sotto:

controller:

  [HttpGet] public ActionResult Index(List ItemsModelList) { ItemsModelList = new List() { //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"); } 

Modello 1:

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

Modello 2:

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

Visualizza (indice):

  @{ ViewBag.Title = "Index"; @model waCheckBoxWithModel.Models.ModelLists }  @using (Html.BeginForm()) { 
@{ int cnt = Model.List.Count; int i = 0; } @foreach (var item in Model.List) { { if (cnt >= 1) { cnt--; } } @Html.Label("Example" + " " + (i + 1))
{ i++;}
}
}

Per il metodo MVC Controller, utilizzare un valore booleano annullabile:

indice ActionResult pubblico (stringa responsabile, bool? checkResp) {ecc.}

Quindi se la casella è selezionata, checkResp sarà true. In caso contrario, sarà nullo.

  public ActionResult Save(Director director) { // IsActive my model property same name give in cshtml //IsActive  
 
IsActive 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"); }

imposta il valore nella casella di controllo in questo modo:

  

cambia checkResp in proprietà nullable nel tuo modello in questo modo:

 public Nullable checkResp{ get; set; } 

uso ? prima di controllareRichiedi come:

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

Responsable: Selectionnez --