Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC 3-ViewModel最佳实践_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc ASP.NET MVC 3-ViewModel最佳实践

Asp.net mvc ASP.NET MVC 3-ViewModel最佳实践,asp.net-mvc,asp.net-mvc-3,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 b

我有一个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;}
   ......
}
公共类ViewModelDemo
{
公共MyChart图表{get;set;}
公共字符串LeftContent{get;set}
公共字符串内容{get;set;}
公共图表化legent{get;set}
......
}
公共类MyChart
{
公共列表xAxis{get;set}
公共列表yAxis{get;set;}
......
}

我试图返回视图模型的原因是,页面的某些部分可能有不同的数据。

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


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

绝对如此。ViewModel是完全可以接受的解决方案。参见巴勒莫优秀MVC行动手册第12.1.5节(免费样本)

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


您的意思是嵌套的viewmodels好吗?我也很有趣,我也这么做(我是说筑巢)。我有一个包含多个逻辑部分的页面,而且只有一个嵌套的ViedModel可以重新请求(取决于ajax或回发请求)。所以我希望你是对的)因为我们谈论的是好的实践:使用与框架/语言相同的命名约定被认为是好的实践。在这种情况下,.NET/C#对公共属性使用合适的外壳。因此,您应该将属性名称更改为
Chart
BottomContent
Legend
(拼写正确)、
XAxis
YAxis