我有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中的任何部分或母版页一样。