Я изучаю IoC в первый раз, но не могу понять, как это работает с viewmodels и привязкой модели в стандартном ASP.NET MVC-контроллере. Предположим, у меня есть базовый контроллер, использующий тесно связанный репозиторий и viewmodel.DI с viewmodel в ASP.NET MVC
public class Sample
{
[HttpGet]
public ActionResult Index()
{
var repo = new SampleRepository();
var model = new SampleViewModel();
model.SampleItems = repo.Get();
return View(model);
}
[HttpPost]
public ActionResult Index(SampleViewModel model)
{
...
}
}
Теперь я хочу использовать DI для затягивая пара этого контроллера от его зависимых классов, так что я впрыснуть хранилище и ViewModel в инъекцией конструктора
public class Sample
{
private readonly ISampleRepository _sampleRepository;
private readonly ISampleViewModel _sampleViewModel;
public Sample(
ISampleRepository sampleRepository,
ISampleViewModel sampleViewModel)
{
_sampleRepository = sampleRepository;
_sampleViewModel = sampleViewModel;
}
[HttpGet]
public ActionResult Index()
{
_sampleViewModel.SampleItems = _sampleRepository.Get()
return View(_sampleViewModel);
}
[HttpPost]
public ActionResult Index(SampleViewModel model)
{
...
}
}
Моя проблема в том, что я в настоящее время инжекции viewmodel через интерфейс, но для действия HttpPost требуется конкретный SampleViewModel для привязки модели?
Я не понял, как это работает? Должен ли я пытаться свободно связывать свою модель обзора с контроллером или это просто то, что требует жесткой связи для работы с переплетным устройством? Я видел код там, где люди используют сервисный уровень для возврата viewmodel к контроллеру, и я знаю, что вы также можете написать настраиваемое связующее устройство, но это похоже на массовый перебор для того, что я хочу здесь сделать? Все, что мне нужно - это способ ввода в базовую модель просмотра, которая затем может использоваться представлением для GET и POST.
Обращаем внимание, что тег-контроллер-модель предназначен для вопросов о шаблоне. Существует определенный тег для реализации ASP.NET-MVC. –
Почему вы вводите модель представления (вы вводите услуги, а не модели)? –
Извинения за пометку - первый пост, так что я изучаю :( – JoshRees