我开始一个新项目,并且热衷于使用KnockoutJS + Web API,这些对我来说是新的,我对Web Api有很好的理解,但是现在Knockout很难让我头脑发热。ASP.Net Web Api + KnockoutJs + MVC4 - 将它们结合在一起
这是我的我多么希望我的应用程序工作的初步想法:
- 我有一个标准的MVC控制器,如
LeadsController
LeadsController
有一个名为ListLeads
的Action
,这实际上并不返回任何数据,但只是返回一个模板来显示来自Knockout的数据。- 的
ListLeads
视图通过AJAX调用我的API控制器LeadsApiController
获得的潜在客户清单显示 - 引线的数据被映射到KnockoutJs视图模型(我不想从服务器端复制我的视图模型转换为JavaScript查看模型)
- 我想尽可能多地使用外部JavaScript文件,而不是使我的HTML页面充满JavaScript。
我见过很多例子,但其中大多数都会在首页加载时返回一些初始数据,而不是通过ajax调用。
所以我的问题是,如何创建我的JavaScript viewModel从ajax检索,其中ajax url是使用Url.Content()
创建的。
另外,如果我需要此ViewModel上的附加计算值,如何从服务器端扩展映射视图模型?
如果我没有很好地解释我自己,请让我知道你不知道什么,我会尝试更新我的问题,以便更明确。
嗨乔。你的方法是绝对正确的,我一直在寻找的很多教程/博客都有类似的解决方案。我一直在评估这种方法,我们开始的大型Web应用程序。我的问题是写很多的JS,我觉得很难管理。还有什么是使用MVC和WebAPI控制器,为什么使用MVC控制器传递空视图?看起来像它的创造性的双重性。 – Yashvit 2013-07-26 04:11:57
MCV返回页面的静态HTML。 Web API返回页面的视图模型JSON数据。如果您不喜欢“空”视图但仍想使用Knockout,则可以将视图模型数据序列化为服务器上的JSON并将其注入到HTML视图中,只要您不想使用AJAX并不介意HTML不再可缓存。 – 2013-07-26 12:38:18
现在有很多解决大型JS应用程序的解决方案。在我写这个答案的那一年,我们现在有Breeze.js和Durandal来组织一切,并实施管道。查看Breeze的TempHire演示项目。 – 2013-07-26 12:41:47