MVCアプリケーションを使用して、データベースから情報をドロップダウンリストに表示したいと考えています。MVCコントローラまたはビューモデルのロジックはどこにあるのですか
ドロップダウンでは、車のメイクテーブルであるテーブルを使用してデータベース車の情報が表示されます。
だから、私の見解では、私のようなものがあります:
@model VectorCheck.ViewModels.CarsViewModel
...
@Html.DropDownListFor(modelItem => Model.MakeId, Model.Makes)
...
をだから、何とか私は、ビューモデルを作るのリストを取得する必要があります。
だから、私はこれと一緒に行くいくつかの論理を持っているかもしれませんが、色は赤色の車だけです。
var redCars = _unitOfWork.Cars(x => x.Colour == "Red");
私の質問は、このクエリのロジックを置くためのベストプラクティスです。それはviewModelまたはコントローラ内になければならない。
私の見方には2つのオプションがあります。
オプション1:コントローラ。
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));
}
のViewModel
public Car Car { get; set; }
public IEnumerable<SelectListItem> CarMakes { get; set; }
InsertUpdateCarViewModel(Car car, IEnumerable<SelectListItem> carMakes)
{
Car= car;
CarMakes = carMakes;
}
したがって、この例では、私は、コントローラにcarMakesを取得し、単にコンテナでのViewModelにそれらを与えます。
OPON 2:ViewModelに
public ActionResult Edit(int id)
{
var car = _unitOfWork.CarRepository.Get(id);
return View("Edit", new InsertUpdateCarViewModel(car));
}
のViewModel
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 });
}
だから、このオプションでは、私は、ビューモデルで正しいcarmakesを取得するためのロジックを入れています。それはコンテナ以上のものです。
私が知りたいことは、これらの方法のどれがこれを行う正しい方法であるかということです。