【问题标题】:ASP.NET MVC 3 - ViewModel Best PracticeASP.NET MVC 3 - ViewModel 最佳实践
【发布时间】:2012-05-12 00:20:51
【问题描述】:

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

【问题讨论】:

  • 你的意思是嵌套视图模型好吗?我也很有趣,并且做同样的事情(我的意思是嵌套)。我有几个逻辑部分的页面,并且只有一个嵌套的 viedmodel 可以被重新请求(取决于 ajax 或回发请求)。所以我希望你是对的)
  • 既然我们在谈论良好实践:使用与框架/语言相同的命名约定被认为是良好实践。在这种情况下,.NET/C# 对公共属性使用适当的大小写。因此,您应该将您的属性名称更改为ChartBottomContentLegend(正确拼写)、XAxisYAxis

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多