5

我有一个 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的原因是页面的某些部分可能具有不同的数据。

4

2 回答 2

3

绝对地。ViewModel 是解决此问题的完全可接受的解决方案。请参阅 Palermo 出色的 MVC in Action 书籍的第 12.1.5 节(在免费示例中很方便)

另一种选择是从域模型中为我们的视图创建一个单独的视图模型类型。我们将为那个视图创建一个专门的类。我们可以随心所欲地塑造该类型,并允许视图随心所欲地塑造我们的视图模型。分离视图模型的优点是我们的视图不会以任何方式影响域模型。对于不太复杂的应用程序,这种分离是不必要的,并且会使设计过于复杂。随着视图复杂性的增加,视图的设计对我们的领域模型的影响越来越大,除非视图模型和领域模型是分开的。

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

于 2012-05-11T13:15:59.453 回答
2

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

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

于 2012-05-11T13:13:40.453 回答