पर जाना चाहिए मेरे पास एक एमवीसी ऐप है जहां मैं डेटाबेस से जानकारी के साथ एक ड्रॉपडाउन सूची प्रदर्शित करना चाहता हूं।एमवीसी जहां तर्क नियंत्रक या दृश्य मॉडल
ड्रॉपडाउन तालिका का उपयोग कर डेटाबेस कारों से जानकारी प्रदर्शित करेगा कार को बनाने का तरीका बनाएं।
तो मेरे विचार में मैं की तरह कुछ करना होगा:
@model VectorCheck.ViewModels.CarsViewModel
...
@Html.DropDownListFor(modelItem => Model.MakeId, Model.Makes)
...
तो किसी भी तरह मैं दृश्य मॉडल बनाता है की सूची प्राप्त करने की जरूरत है।
तो मुझे इसके साथ जाने के लिए कुछ तर्क हो सकता है कि केवल लाल रंग वाली कारें हों।
var redCars = _unitOfWork.Cars(x => x.Colour == "Red");
तो मेरा सवाल यह है कि इस क्वेरी के लिए तर्क डालने का सबसे अच्छा अभ्यास कहां है। इसे मॉडल या नियंत्रक के दृश्य में जाना चाहिए।
जिस तरह से मैं इसे देखता हूं मेरे पास दो विकल्प हैं।
विकल्प 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 मिलता है। यह एक कंटेनर से अधिक है।
तो मैं क्या जानना चाहता हूं कि इन तरीकों में से कौन सा तरीका ऐसा करने का सही तरीका है?