2011-04-07 98 views
0

我有一个MVC3视图,正在从控制器使用视图模型填充。 Viewmodel在存储库中使用填充方法进行了inistial化/填充。现在我想创建部分视图并且想要隐藏少量部分。我是否需要创建不同的方法来填充视图模型,我需要打破viewmodela?请建议填充部分视图

回答

2

您可以让您的视图模型具有不同的复杂属性,这些属性本身代表将绑定到相应部分的其他视图模型。您还可能包含布尔属性,指示这些部分是否需要可见。有

@if (Model.ShouldShowFooSection) 
{ 
    @Html.Partial("_Foo", Model.Foo) 
} 
+0

viewmodel呢?我如何将主视图模型分解为多个部分,以便earch部分可以填充局部视图 – DotnetSparrow 2011-04-07 14:22:34

+0

@DotnetSparrow,视图模型的每个属性都可以表示相应局部视图将被强制键入的另一个视图模型。此子视图模型将包含此部分视图所需的所有必要属性。 – 2011-04-07 14:24:47

1

没什么可说的,你以支持局部视图来定义一个新的视图模型或方法库:例:

@if (Model.ShouldShowFooSection) 
{ 
    @Html.DisplayFor(x => x.Foo) 
} 

或。根据场景的细节,您必须决定是否值得。

长期维护可能会更好,但是这纯粹是您设计的选择。

根据存储库的工作方式,如果您只需检索数据子集,性能可能会有所提高 - 但这可能会因为多个存储库调用渲染单个页面而导致性能损失超过。