我正在尝试为我正在开发的ASP.NET MVC 4应用程序设置MVVM。最近我遇到了John Papa的优秀演示文稿/代码示例(可在此处查看http://www.johnpapa.net/recent-presentation-on-spa-basics/)。
他谈到了jquery / knockout.js / breeze.js软件堆栈,但仅限于单页面应用程序(SPA)的上下文。
查看代码 - 我看到bootstrapper.js巧妙地为所有视图设置了绑定。
ko.applyBindings(vm.sessions, $(app.viewIds.sessions).get(0));
ko.applyBindings(vm.speakers, $(app.viewIds.speakers).get(0));
ko.applyBindings(vm.session, $(app.viewIds.session).get(0));
如果我有更多的cshtml文件,要在更复杂的应用程序中拆分视图,我怎样才能在导航发生时优雅地处理启动捆绑?
答案 0 :(得分:4)
你可以使用几个选项(在我的头顶)链接到html的其他视图: 1)@ Html.Partial 2)Knockout External Templating plugin 3)自定义AJAX去抓取视图的HTML 4)你想要的模板引擎抓住它 5)RequireJS及其文本插件 6)将它们全部加载到1页(任何大小的icky)
如果你已经敲门了,你可能想使用Knockout外部模板插件。它非常适合拉入远程HTML。如果你已经有了require.js,那么插入的文本也非常好。
答案 1 :(得分:1)
你仍然可以将它作为SPA,但将所有“页面”分成单独的cshtml文件,然后使用Html.Partial将它们加载到index.cshtml中:
@Html.Partial("_Substation")
@Html.Partial("_Location")
@Html.Partial("_Weather")
@Html.Partial("_RealTimeValues")
@Html.Partial("_EventView")
所有这些字符串都是我单独的cshtml文件的名称,但它仍然是SPA。
除非你想要没有SPA的另一个原因?