Mat*_*lin 18 asp.net-mvc knockout.js
将KnockoutJS Viewmodels与ASP.NET MVC3或4结合使用是否有意义?因为它不是很干,不是吗?我必须为EF编写模型,为MVC视图编写Viewmodels,为Knockout编写Viewmodels ......我失去了很多魔法.例如,自动客户端验证.
如果坚持使用MVVM模式,那么使用MVC是否有意义?
Jud*_*ngo 15
使用Knockout Mapping,您可以从MVC视图模型自动生成KO视图模型.
这是一个合适的模式:您的模型是原始实体,您的数据.您的观点是用户界面.您的视图模型是适合该特定视图的模型.
这可能是一个不受欢迎的答案,但我不会ko.mapping将我的C#POCO翻译成JS视图模型.真的有两个原因.
首先是缺乏控制.如果你愿意,ko.mapping会把所有东西变成一个可观察的东西.对于不需要观察的字段,这可能会导致很多开销.
第二个原因是关于可扩展性.当然,ko.mapping可以将我的C#POCOS转换为具有可观察属性的JS对象.这很好,直到你想要一个JS方法,在某些时候,你总是会.
在之前的项目中,我实际上是以编程方式为ko.mapped对象添加额外的方法.那时,我质疑ko.mapping是否真的创造了比它解决的更多问题.
我接受了您对DRY的担忧,但是,无论如何,我的POCO版本都有不同的以域名为中心的版本.例如MyProject.Users.User,UserController 提供的对象可能与a非常不同MyProject.Articles.User.Users命名空间中的用户可能包含许多与用户管理相关的内容.Articles命名空间中的User对象可能只是一个简单的查找,以指示文章的作者.我认为这种方法不违反DRY原则; 而是以两种不同的方式看待相同概念的手段.
这是更多的前期工作,但这意味着我有特定于问题的用户表示,不会污染彼此的实现.
所以它是Javascript视图模型.它们不是C#POCO.它们是针对特定目的的概念的具体考虑; 持有和操作客户端数据.虽然ko.mapping最初会给你带来生产力的提升,但我认为手工制作为客户设计的特定视图模型会更好.
顺便说一句,我使用与你自己完全相同的MVC3/KnockoutJS策略.
| 归档时间: |
|
| 查看次数: |
8834 次 |
| 最近记录: |