У меня есть ModelFactoryService, которая отвечает за создание ViewModels.Он создает сам ViewModel и добавляет все необходимые данные (для списков и т. Д.) В ViewBag для последующего использования View.
Вот интерфейс IModelFactoryService:
public interface IModelFactoryService
{
TranslationViewModel CreateTranslationViewModel(dynamic viewBag, TranslationViewModel.TranslationFormModel translationFormModel = null);
TranslationViewModel.TranslationFormModel CreateTranslationFormModel();
InterpretationViewModel CreateInterpretationViewModel(dynamic viewBag, InterpretationViewModel.InterpretationFormModel interpretationFormModel = null);
InterpretationViewModel.InterpretationFormModel CreateInterpretationFormModel();
}
Я бы предпочел передать ViewBag (изтекущий контроллер) через конструктор, например:
public class ModelFactoryService : IModelFactoryService
{
private readonly IRepository _repository;
private readonly ICacheService _cacheService;
private readonly dynamic _viewBag;
#region ctor
public ModelFactoryService(IRepository repository, ICacheService cacheService, dynamic viewBag)
{
_repository = repository;
_cacheService = cacheService;
_viewBag = viewBag;
}
#endregion
...
Я использую StructureMap в качестве контейнера IoC / DI, но я не знаю, как его настроить.Любой совет?
PS: я не нашел лучшего способа передачи дополнительных данных (для ListBoxes и т. Д.) В Views.Я не хочу, чтобы мои представления обращались к БД (это плохо), и если я передаю данные в качестве свойств модели, они доступны только этой модели, а не какой-либо частичной или главной странице, как в Viewbag.