Ну, добавьте конструктор с параметром и свойством в ваш контроллер и используйте DI (лично мне нравится Ninject), чтобы внедрить правильную реализацию репозитория:
public IEventsRepository _repo;
public EventsController(IEventsRepository repository)
{
_repo = repository;
}
Связать (связать) зависимости вверх вglobal.asax.cs в приложении и модуле сайта Ninject (если вам нужен расширенный ответ с включенным, пожалуйста, дайте мне знать),
, затем в вашем действии Edit используйте репозиторий, чтобы получить Locations
.Предположим, у вас есть метод LoadLocations()
в интерфейсе репозитория и его конкретная реализация, например, SqlEventsRepository
(реализует IEventsRepository
), вы делаете это просто вызывая метод:
public ActionResult Edit(Event id)
{
...
EventsEditModel model = new EventsEditModel();
_repo.GetInstance(id);
model.Locations = _repo.LoadLocations();
...
}
Я придумываю это, потому что вы не предоставили слишком много информации.И я не знаю особенностей Automapper, когда вы хотите загрузить некоторые дополнительные данные из хранилища данных до сопоставления сущности с ViewModel.
Также вы не указываете, является ли это действие редактирования GET
или POST
, но я предполагаю, что это GET
.Предполагая, что это действительно GET
, я не знаю, как вы можете загрузить что-либо, предоставив Entity для действия.
Чаще всего методы GET
используют параметры типа string или int (скорее всего, те, чтоявляются слизнями или идентификаторами некоторого рода) и POST
методы используют параметры типа ViewModel (не Entity).
Таким образом, ваша подпись метода POST должна быть такой:
[HttpPost]
public ActionResult Edit(EventsEditModel model)...
, которую я использовал для использованияСущности прямо в моих действиях подписывались и терпели неудачу все время, поэтому я не рекомендую это другим.
HTH