ASP.NET MVC4 ViewModel和knockoutJS ViewModel重复

时间:2012-12-21 01:18:51

标签: asp.net-mvc knockout.js

我有一个带有Model(Entity)DLL项目的MVC4应用程序,该项目在BusinessLogic和DataAccess层中使用。 MVC控制器使用一些映射器扩展方法将ViewModel(绑定到视图)转换为模型,并将Model对象传递给BusinessLogic层。

我的问题是:如果我需要一些像KnockoutJS这样的客户端功能,那么创建另一套KnockoutJS ViewModel是不错的做法?我担心ViewModels的可维护性和频繁更改。

2 个答案:

答案 0 :(得分:2)

我会说不,knockoutJS是客户端库,因此不应该真正决定服务器如何发送数据。只要您的视图模型包含渲染所需的所有相关信息,那么这就是您所需要的。客户端如何处理这与服务器完全无关。

通过创建knockoutJS特定的视图模型,您基本上将服务器响应耦合到您的客户端,这不是一个好主意 - 如果您更改为另一个客户端,该怎么办?如果您想支持多个客户端怎么办?

我建议您创建一个特定于KnockoutJS的视图模型的客户端表示。

答案 1 :(得分:0)

我建议您创建特定于KnockoutJS的ViewModel(或任何其他要使用的客户端)。

我觉得在您的站点内,在服务器端使用的ViewModel应该能够轻松更改,因为该站点既创建它们又消耗它们。此外,如果出现问题,您可以让编译器通知您。

然而,我觉得当我们将这些模型暴露给客户时,这些变成了一个不应该改变的契约,或者至少不会经常改变。

相关问题