Asp.NET MVC: как внедрить ViewBag / ViewMode - PullRequest
0 голосов
/ 10 января 2012

У меня есть 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...