ASP.NET MVC 3 - ViewModel最佳实践

时间:2012-05-11 13:09:12

标签: asp.net-mvc asp.net-mvc-3

我有一个Razor视图,其中包含大量图形和其他文本字段,这些字段从控制器获取数据。我正在考虑将ViewModel从控制器传递到视图,然后将解析相关内容并显示它。

在MVC中,有人可以建议上述方法是解决此问题的最佳方法吗?

ViewModel类可能如下所示:

public class ViewModelDemo
{
    public MyChart chart {get;set;}
    public string LeftContent {get;set}
    public string bottomContent {get;set;}
    public ChartLeged legent {get;set} 
    ......
}

public class MyChart
{
   public List<int> xAxis {get;set}
   public List<int> yAxis {get;set;}
   ......
}

我试图返回ViewModel的原因是页面的某些部分可能包含不同的数据。

2 个答案:

答案 0 :(得分:3)

绝对。 ViewModel是解决此问题的完全可接受的解决方案。参见巴勒莫出色的MVC行动手册第12.1.5节(方便地在免费样本中)

  

另一种选择是为视图创建单独的视图模型类型   来自领域模型。我们将创建一个专门的类,仅供参考   那一个观点。我们可以根据自己的喜好塑造这种类型,并允许   视图来塑造我们想要的视图模型。一个的优点   分离的视图模型是我们的视图不会影响域   以任何方式建模。对于不太复杂的应用,这种分离是   没有必要,并使设计过于复杂。由于复杂性   观点增加,观点的设计也越来越受到影响   我们的域模型,除非是视图模型和域模型   分离。

http://www.manning.com/palermo/Samplechapter12.pdf

答案 1 :(得分:2)

我认为你的解决方案是正确的。

另一种方法可能是将大剃刀视图拆分为较小的局部视图,每个视图都具有更简单的视图模型。这对于可读性,责任分离,ecc。

非常有用