【问题标题】:MVC3 and KnockoutJS DRYlyMVC3 和 KnockoutJS DRYly
【发布时间】:2012-02-22 04:10:01
【问题描述】:
所以我一直在 .Net 中使用 MVC 的方式是为每个视图创建 ViewModel。
现在,通过使用 Knockout,我会在 javascript 中而不是 C# 类中创建我的 ViewModel 吗?然后将我的主模型(在这种情况下,EF 生成的模型)作为我唯一的 C# 模型类?还是我仍然会与我的 Knockout ViewModel 一起创建一个 C# ViewModel 类?
我正在尝试 DRYly 设置此项目,但我不确定在这种情况下的最佳做法。
【问题讨论】:
标签:
asp.net-mvc-3
knockout.js
dry
【解决方案1】:
您可以为 C# 服务器端创建视图模型 (VM),并且仍然将它们用于 ASP.NET MVC 视图。然后也为客户端 javascript 视图创建虚拟机。但我最喜欢的方式是使用 MVC 视图作为页面的基础,并让模型成为 JavaScript 模型的基础。唯一的 VM 将是 JavaScript VM,因为大部分演示实际上是在客户端完成的。换句话说,在 MVC 中做更多的静态管道,然后做动态交互客户端。
如果您主要使用 KO 等客户端 JS 库进行构建,除非您有充分的理由,否则我不会从用于 MVC 端的 VM 开始。
如果您有具体问题,我很乐意提供帮助。
【解决方案2】:
- 像往常一样创建视图模型。
- 创建一个 HTML 助手,从中生成一个 KO 视图模型。
【解决方案3】:
您应该将您的 Knockout 视图模型基于来自服务器的视图数据,以便至少使用来自服务器的数据对其进行初始化,而无需发出单独的请求来获取该数据。
您可以选择使用mapping plugin 将视图数据映射到您的视图模型。