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

350
Visualizações
¿Cómo vincular los valores seleccionados de las listas desplegables en una tabla generada dinámicamente? ASP.NET Core MVC

En mi proyecto ASP.NET Core MVC, hay una tabla con dos columnas que contienen listas desplegables donde se supone que el usuario debe elegir los valores de las tasas y hacer clic en Guardar para actualizarlos para cada fila de la tabla. Hay docenas de filas generadas dinámicamente en total, lo que da como resultado el doble de listas desplegables con valores para rastrear.

Una vez más, el objetivo es actualizar cada fila con los valores seleccionados en las dos listas desplegables de esa fila.

Pude crear la tabla y mostrar los valores. Hay un bucle que genera cada fila de la tabla. El problema que tengo es no saber cómo pasar todos los valores de todas las listas desplegables al controlador junto con los números de fila para poder escribir la lógica para actualizar los valores en la base de datos. Puedo pasar una única combinación desplegable desde la primera fila y no sé cómo hacer lo mismo para todos ellos o indicar de qué fila son. El hecho de que las listas desplegables estén en un bucle hace que esto sea difícil.

Esta es la parte de la vista donde muestro la tabla:

 <tbody> @foreach (var item in Model.WorksheetRates) { var recordNumber = PagedContext.Page * PagedContext.PageSize + Model.WorksheetRates.IndexOf(item) + 1; <tr> <td>@recordNumber</td> <td> @item.Program </td> <td> @item.Area </td> <td> @Html.DropDownListFor(x => x.GARateID, gaRatesList, new { @style = "width:280px;" }) </td> <td> @Html.DropDownListFor(x => x.OverheadRateID, overheadRatesList, new { @style = "width:280px;" }) </td> </tr> } </tbody>

Este es el modelo:

 public class BudgetPrepViewModel { public List<WorksheetRate> WorksheetRates { get; set; } public int GARateID { get; set; } public int OverheadRateID { get; set; } public IEnumerable<SelectListItem> GARateList { get; set; } public IEnumerable<SelectListItem> OverheadRateList { get; set; } }

Como puede ver, agregué el objeto IEnumerable<SelectListItem> porque pensé que tendrían que usarse e iterarse en el controlador. Esto es una conjetura, no sé cómo enlazarlos. Y es importante que los asocie con la fila correcta.

Esto es lo que se me ocurrió en el controlador para el encabezado, el código real dentro no es relevante para la pregunta:

 [HttpPost, ActionName("SelectRates")] public IActionResult SelectRates([Bind("GARateID, OverheadRateID")] BudgetPrepViewModel data) { BPViewModel model = new BPViewModel { MonthNameList = MonthSelectList(), PrepStep = 8 }; return View("Index", model); }

Cualquier ayuda sería apreciada. Por favor, hágamelo saber si algo no está claro, hice todo lo posible para describir esta pregunta. ¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En primer lugar, asumo que WorksheetRate tiene GARateID y OverheadRateID como propiedades, ya que están dentro de la misma fila de la tabla. En segundo lugar, agregué una identificación de propiedad a WorksheetRate para que las opciones seleccionadas puedan identificarse cuando se envía el formulario. Dicho esto, ahora las clases quedan así:

 public class WorksheetRate { public int Id { get; set; } public string Program { get; set; } public string Area { get; set; } public int GARateID { get; set; } public int OverheadRateID { get; set; } } public class BudgetPrepViewModel { public List<WorksheetRate> WorksheetRates { get; set; } public IEnumerable<SelectListItem> GARateList { get; set; } public IEnumerable<SelectListItem> OverheadRateList { get; set; } }

El aspecto clave aquí es que el nombre de las selecciones y entradas debe seguir un patrón para que ASP.NET lo vincule al modelo. En este caso, para vincular valores a la propiedad GARateID de BudgetPrepViewModel.WorksheetRates, el nombre de las selecciones y las entradas debe ser:

  • selecciona:
    • <select name="WorksheetRates[0].GARateID">
    • <select name="WorksheetRates[1].GARateID">
  • entradas
    • <input hidden name="WorksheetRates[0].Id" />
    • <input hidden name="WorksheetRates[1].Id" />

Por lo tanto, la solución es:

 @for (var i=0; i<Model.WorksheetRates.Count(); i++) { <tr> <td> @Model.WorksheetRates[i].Id <input hidden asp-for="WorksheetRates[i].Id" /> </td> <td> @Model.WorksheetRates[i].Program </td> <td> @Model.WorksheetRates[i].Area </td> <td> @Html.DropDownListFor(x => x.WorksheetRates[i].GARateID, Model.GARateList, new { @style = "width:280px;" }) </td> <td> @Html.DropDownListFor(x => x.WorksheetRates[i].OverheadRateID, Model.OverheadRateList, new { @style = "width:280px;" }) </td> </tr> }

He creado unrepositorio con la solución de trabajo completa.

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