使用KnockoutJS viewmodels与ASP.NET MVC3或4组合是否有意义?因为不是很干,不是吗?我必须为EF编写模型,用于MVC视图和viewmodels for Knockout …的视图模型,我失去了很多魔法。自动客户端验证例如。
如果使用MVVC模式,使用MVC是否有意义?
解决方法
这可能是一个不受欢迎的答案,但我不使用ko.mapping将我的C#POCO翻译成JS视图模型。两个原因,真的。
第一个是缺乏控制。如果你放弃,ko.mapping会将所有内容变成可观察的。这可能会导致不需要可观察的字段的大量开销。
第二个原因是关于可扩展性。当然,ko.mapping可以将C#POCOS转换成具有可观察属性的JS对象。这是很好,直到你想要一个JS方法,在某种程度上,你总是会的。
在之前的项目中,我实际上是通过编程方式为ko.mapped对象添加了额外的方法。在这一点上,我质疑ko.mapping是否真的造成了比解决问题更多的问题。
我承担了你的干嘛的问题,但是我也有不同的域名版本的我的POCO。例如,UserController提供的MyProject.Users.User对象可能与MyProject.Articles.User非常不同。用户名称空间中的用户可能包含与用户管理相关的大量内容。文章命名空间中的用户对象可能只是一个简单的查找来指示文章的作者。我不认为这种做法违反了干预原则;而是以两种不同的方式来看待相同的概念。
这是更前期的工作,但这意味着我对用户的问题具体表示不会污染对方的实现。
所以它是与JavaScript视图模型。他们不是C#POCO。它们是一个特定的,适合于特定目的的概念;持有和操作客户端数据。虽然ko.mapping最初会给你提供什么似乎是提高生产力,我认为最好手工制作为客户设计的特定视图模型。
btw,我使用与你自己完全相同的MVC3 / KnockoutJS策略。