2011-08-25 64 views
1

目前我使用的是ViewModelFactory挂在的HtmlHelper扩展方法:填充Partial的ViewModels的最佳位置?

public static IViewModelFactory ViewModels(this HtmlHelper helper) 
{ 
    var factory = DependencyResolver.Current.GetService<IViewModelFactory>(); 
    return factory; 
} 

再一个例子视图与部分:

@model WidgetViewModel 

<fieldset> 
    @using (Html.BeginForm()) 
    { 
     @Html.Partial("_Form.cshtml", Html.ViewModels().EventForm()) 
    } 
</fieldset> 

这是一个坏主意?感觉很脏。如果是这样,可测试的最佳实践在哪里/如何为我的Partial填充/构建ViewModels?

回答

1

这完全打破了模式。

ViewModels应通过控制器提供,而不是视图。

+0

WidgetViewModel通过控制器提供。我需要为视图中包含的** partial **填充EventForm模型。 – mxmissile

+0

然后把它放在WidgetViewModel中。 – jfar

+0

这是有道理的,但'WidgetViewModel.EventForm'只会在一种情况下使用。在多个视图中使用'WidgetViewModel'。为此实例创建第三个ViewModel,例如'WidgetViewModelWithEventForm'? – mxmissile