Asp.NET MVC:如何注入ViewBag / ViewMode

时间:2012-01-10 10:37:02

标签: asp.net-mvc view model

我有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(来自当前的Controller),如下所示:

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:我没有找到更好的方法如何将其他数据(对于ListBox等)传递给Views。我不希望我的视图访问数据库(这是坏事),如果我将数据作为模型的属性传递,那么它们只能由该模型访问,而不是像Viewbag中的任何部分或母版页一样。

0 个答案:

没有答案