我有一个带有Model(Entity)DLL项目的MVC4应用程序,该项目在BusinessLogic和DataAccess层中使用。 MVC控制器使用一些映射器扩展方法将ViewModel(绑定到视图)转换为模型,并将Model对象传递给BusinessLogic层。
我的问题是:如果我需要一些像KnockoutJS这样的客户端功能,那么创建另一套KnockoutJS ViewModel是不错的做法?我担心ViewModels的可维护性和频繁更改。
答案 0 :(得分:2)
我会说不,knockoutJS是客户端库,因此不应该真正决定服务器如何发送数据。只要您的视图模型包含渲染所需的所有相关信息,那么这就是您所需要的。客户端如何处理这与服务器完全无关。
通过创建knockoutJS特定的视图模型,您基本上将服务器响应耦合到您的客户端,这不是一个好主意 - 如果您更改为另一个客户端,该怎么办?如果您想支持多个客户端怎么办?
我建议您创建一个特定于KnockoutJS的视图模型的客户端表示。
答案 1 :(得分:0)
我建议您创建特定于KnockoutJS的ViewModel(或任何其他要使用的客户端)。
我觉得在您的站点内,在服务器端使用的ViewModel应该能够轻松更改,因为该站点既创建它们又消耗它们。此外,如果出现问题,您可以让编译器通知您。
然而,我觉得当我们将这些模型暴露给客户时,这些变成了一个不应该改变的契约,或者至少不会经常改变。