Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

87
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda