Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

95
Views
Modelo MVC con una lista de objetos como propiedad

Estoy trabajando en una aplicación MVC donde el Item de la clase Model tiene una List<Colour> llamada AvailableColours como propiedad.

AvailableColours es un subconjunto de clases de Colour definido por el usuario. Me gustaría mostrar todas las instancias de Colour en una lista de casillas de verificación y, cuando se envían, AvailableColours es una List<Colour> que contiene las clases de Colour seleccionadas.

¿Cuál es la mejor manera de hacer esto en MVC?

Editar: mi código hasta ahora, ¡aunque creo que esta no es la forma más parecida a MVC de hacerlo!

Modelo

 public class Item { public int ID { get; set; } public List<Colour> AvailableColours { get; set; } }

Vista

 @model MyNamespace.Models.Item @using MyNamespace.Models; @{ ViewBag.Title = "Create"; var allColours = new List<Colour>(); //retrieved from database, but omitted for simplicity } <h2>Create New Item</h2> @using (Html.BeginForm("Create", "Item", FormMethod.Post)) { <div> @Html.LabelFor(model => model.AvailableColours) @foreach (var colour in allColours) { <input type="checkbox" name="colours" value="@colour.Description" /> } </div> <input type="submit" value="Submit" /> }

Controlador

 [HttpPost] public ActionResult Create(Item item, string[] colours) { try { foreach (var colour in colours) { item.AvailableColours.Add(GetColour(colour));//retrieves from database return RedirectToAction("Index"); } } catch { return View(); } }
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Modelos

 public class Item { public List<Colour> AvailableColours { get;set; } } public class Colour { public int ID { get; set; } public string Description { get; set; } public bool Checked { get; set; } }

Tenga en cuenta la propiedad Checked

Ver para bucle

 @using (Html.BeginForm("Create", "Item", FormMethod.Post)) { <div> @Html.LabelFor(model => model.AvailableColours) @for(var i = 0; i < Model.AvailableColours.Count; i++) { @Html.HiddenFor(m => Model.AvailableColours[i].ID) @Html.HiddenFor(m => Model.AvailableColours[i].Description) @Html.CheckBoxFor(m => Model.AvailableColours[i].Checked) @Model.AvailableColours[i].Description<br/> } </div> <input type="submit" value="Submit" /> }

Tenga en cuenta el bucle for en lugar de foreach para habilitar el enlace del modelo y los campos ocultos para permitir que los valores se publiquen de nuevo en el controlador

Vinculación de modelo a una lista

Puesto de controlador

 [HttpPost] public ActionResult Create(Item model) { //All the selected are available in AvailableColours return View(model); }
over 4 years ago · Santiago Trujillo Report

0

Gracias por todos los consejos, invaluables, pero había un cambio más que necesitaba hacer antes de que mi programa se vinculara al modelo y era agregar un getter y un setter a la Lista como en:

 public class CartViewModel { public List<CartRowViewModel> cartRows {get; set; } public CartViewModel() { this.cartRows = new List<CartRowViewModel>(); } }
over 4 years ago · Santiago Trujillo Report

0

Asegúrese de agregar el constructor en la clase y declarar la lista dentro de ella. De lo contrario, se declararía como un valor nulo que no podrá establecer para más adelante.

 public class Item { public Item(){ AvailableColours =new List<Color>(); } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!