Tengo una aplicación MVC donde quiero mostrar una lista desplegable con información de la base de datos.MVC donde debería ir la lógica Controlador o el Modelo de Vista
El menú desplegable mostrará la información de la base de datos Automóviles que usan la mesa Marca cuál es la marca del automóvil.
Así que en mi opinión voy a tener algo como:
@model VectorCheck.ViewModels.CarsViewModel
...
@Html.DropDownListFor(modelItem => Model.MakeId, Model.Makes)
...
Así que de alguna manera me necesita para obtener el modelo de vista la lista de marcas.
Así que podría tener un poco de lógica para este decir solo autos que son de color rojo.
var redCars = _unitOfWork.Cars(x => x.Colour == "Red");
Así que mi pregunta es dónde es la mejor práctica para poner la lógica para esta consulta. Debería ir en viewModel o controlador.
De la manera en que lo veo, tengo dos opciones.
Opción 1: El controlador.
public ActionResult Edit(int id)
{
var car = _unitOfWork.CarRepository.Get(id);
var carMakes = _unitOfWork.CarMakeRepository.Where(x => x.Colour == "Red").Select(u => new SelectListItem { Value = u.CarMakeId.ToString(), Text = u.Name });
return View("Edit", new InsertUpdateCarViewModel(car, carMakes));
}
modelo de vista
public Car Car { get; set; }
public IEnumerable<SelectListItem> CarMakes { get; set; }
InsertUpdateCarViewModel(Car car, IEnumerable<SelectListItem> carMakes)
{
Car= car;
CarMakes = carMakes;
}
Así que en este ejemplo que reciben los carMakes en el controlador y los dará al modelo de vista que es simplemente un contenedor.
Opón 2: El modelo de vista
public ActionResult Edit(int id)
{
var car = _unitOfWork.CarRepository.Get(id);
return View("Edit", new InsertUpdateCarViewModel(car));
}
modelo de vista
public Car Car { get; set; }
public IEnumerable<SelectListItem> CarMakes { get; set; }
InsertUpdateCarViewModel(Car car)
{
Car= car;
CarMakes = _unitOfWork.CarMakeRepository.Where(x => x.Colour == "Red").Select(u => new SelectListItem { Value = u.CarMakeId.ToString(), Text = u.Name });
}
Así que en esta opción Estoy poniendo la lógica para obtener los carmakes correctas en el modelo de vista. Es más que un contenedor.
Entonces, ¿qué es lo que quiero saber es cuál de estas formas es la forma correcta de hacerlo?