我计划在客户端为单个页面应用程序使用knockout.js和MVVM模式。因此,模型,ViewModels将定义在客户端。我对我们如何在服务器端进行结构感到困惑。
发布于 2012-05-03 15:56:15
我建议您计算出视图模型实际需要的数据,然后让控制器构建一个包含该数据的服务器端视图模型,并以JSON格式将其发送到客户端。
这样,您就不会向客户端(或向后)发送不必要的数据,您仍然能够在服务器上完成许多繁重的工作,而剔除视图模型可以完成它们的目的:显示视图将要使用的数据。
发布于 2012-05-04 08:23:08
您在第2点中描述的实际上是我使用最多的解决方案,这对我来说很有意义:我在服务器端使用Automapper在特定于视图的域模型和ViewModels (.Net对象)之间映射,并且只包含视图需要的数据。Controller负责第一次加载视图,它将把视图绑定到ViewModel,这样页面就可以快速初始化,而无需进行Ajax调用。在视图本身中,我创建了剔除视图模型,通过Json编码有界的viewmodel (例如使用Asp.Net MVC )分配任何初始值(如果需要的话)
var boundedViewModel = @Html.Raw(Json.Encode(Model));发布于 2012-05-03 15:51:20
我就是这样处理这个问题的。如果这是一个直接的MVC应用程序,你仍然会创建视图模型。
有时,对于复杂的数据集,我可以看到使用类似倒扣之类的东西的用例,它采用了backbone.js的丰富数据模型,并将其与knockout.js http://kmalakoff.github.com/knockback/相结合。
https://stackoverflow.com/questions/10434203
复制相似问题