首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Knockout.js中使用MVVM时在服务器端定义模型

在Knockout.js中使用MVVM时在服务器端定义模型
EN

Stack Overflow用户
提问于 2012-05-03 15:09:43
回答 3查看 1.9K关注 0票数 2

我计划在客户端为单个页面应用程序使用knockout.js和MVVM模式。因此,模型,ViewModels将定义在客户端。我对我们如何在服务器端进行结构感到困惑。

  1. 现在,控制器会返回域模型本身吗?域模型到ViewModel的映射是否只发生在客户端?在我的解决方案中,域模型和ViewModel之间存在很大的差距。因此,上述方法将导致大量数据不必要地返回到客户端。虽然这看起来有点过分,但我考虑在服务器端重复ViewModel和InputViewModel定义(前者表示呈现的数据,后者表示要回发到控制器操作的数据),还有一个映射层(基于automapper)将域模型映射到服务器端的ViewModels。这有道理吗?或者有更好的方法?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-03 15:56:15

我建议您计算出视图模型实际需要的数据,然后让控制器构建一个包含该数据的服务器端视图模型,并以JSON格式将其发送到客户端。

这样,您就不会向客户端(或向后)发送不必要的数据,您仍然能够在服务器上完成许多繁重的工作,而剔除视图模型可以完成它们的目的:显示视图将要使用的数据。

票数 2
EN

Stack Overflow用户

发布于 2012-05-04 08:23:08

您在第2点中描述的实际上是我使用最多的解决方案,这对我来说很有意义:我在服务器端使用Automapper在特定于视图的域模型和ViewModels (.Net对象)之间映射,并且只包含视图需要的数据。Controller负责第一次加载视图,它将把视图绑定到ViewModel,这样页面就可以快速初始化,而无需进行Ajax调用。在视图本身中,我创建了剔除视图模型,通过Json编码有界的viewmodel (例如使用Asp.Net MVC )分配任何初始值(如果需要的话)

代码语言:javascript
运行
复制
var boundedViewModel = @Html.Raw(Json.Encode(Model));
票数 1
EN

Stack Overflow用户

发布于 2012-05-03 15:51:20

我就是这样处理这个问题的。如果这是一个直接的MVC应用程序,你仍然会创建视图模型。

有时,对于复杂的数据集,我可以看到使用类似倒扣之类的东西的用例,它采用了backbone.js的丰富数据模型,并将其与knockout.js http://kmalakoff.github.com/knockback/相结合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10434203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档