Tengo un controlador que envía una lista de elementos a la API y luego obtengo la respuesta del elemento, lo que significa que voy a recibir, por ejemplo, si el elemento no se encontró o no es válido, ¡funciona bien! ! pero me gustaría saber cómo puedo enviar la lista de respuesta automática a una vista desde mi controlador y qué necesito agregar en la vista.
DTO
public class ReceivedItemsRequest { public List<string> Items { get; set; } } public class ReceivedItemsResponse { public bool HasErrors { get; set; } public List<ReceivedItemResponse> ItemResponses { get; set; } = new List<ReceivedItemResponse>() ; } public class ReceivedItemResponse { public string Barcode { get; set; } public string ErrorMsg { get; set; } } }Controlador
[HttpPost] public async Task<ActionResult> Received(List<string> itemsList) { try { var dtoRequest = new ReceivedItemsRequest(); var dtoResponse = new ReceivedItemsResponse(); dtoRequest.itemsList= itemsList; dtoResponse = await API.Post<ReceivedItemsResponse, ReceivedItemsRequest>($"items/", dtoRequest); return View(dtoResponse); ---> this part I'm not sure how to send the list and what I need to add in the view or if I need to create a view model? }A partir de su código, descubrí que está devolviendo un solo registro, no una Lista en el controlador. Entonces, si el valor de retorno de su API es un registro único, lo enviará a la Vista como se muestra a continuación:
Su controlador:
[HttpPost] public async Task<ActionResult> Received(List<string> itemsList) { ... dtoResponse = await API.Post<ReceivedItemsResponse, ReceivedItemsRequest>($"items/", dtoRequest); return View(dtoResponse); }Tu vista:
@model Application.ReceivedItemsResponse @{ ViewBag.Title = "Received Items Response"; } ...HTML Code on View here...si está esperando una lista como respuesta, entonces en su vista tendría:
@model IEnumerable<Application.Models.ReceivedItemsResponse> @{ ViewBag.Title = "Index Item Response"; } ...HTML Code Block here ....Tenga en cuenta que su controlador no cambia siempre que pase un solo registro o una lista, pero su vista sí lo hace.