混合了Angular路由和MVC局部视图



我想在大多数应用程序中使用角度模板,但对于某些页面,我想使用aspnet mvc控制器和ng视图中显示的部分视图。

我一直在尝试这样的路由:

when('/AccountX/Manage', { templateUrl: '/Account/Manage', controller: AccountController }).
when('/Account/Manage', { controller: AccountController }).

我还将Account/Manage表单更改为ajax,但似乎在发布表单后,angular会继续执行get。

我使用的是没有hashbang的html5Mode。我的目标是始终拥有正常的url。

有没有办法告诉angular避开一些路线?像aspnet MVC中的IgnoreRoute吗?

抱歉我说得太含糊了。就我自己的理解而言,我只想找到一个将标准aspnetmvc与angular混合的工作概念,不管它是好是坏。

看起来有一些方法可以使用$location服务来完成您的请求:

有条件地让锚链接将用户发送到不同的页面,而不是加载到ng视图

使其工作的一个重要部分似乎是避免将ng应用程序分配给html元素。当ng应用程序较小时,它外部的部分不会受到路由的影响。

这一过程中存在一些潜在问题:

  • ng-app不能嵌套
  • 只有第一个CCD_ 2自动地被引导
  • 后一个ng-app的添加方式如下:angular.bootstrap(element[, modules]);

http://docs.angularjs.org/api/ng.directive:ngApp
http://docs.angularjs.org/api/angular.bootstrap

当ng应用程序中存在不应触发角度路由的链接时,可以通过添加target="_self"(或任何目标属性)来避免。

有一个很好的mvc4+角度+微风的项目模板可用,可以进行研究和测试。(至少需要VS 2012 Update 2。)
http://www.asp.net/single-page-application/overview/templates/breezeangular-template

结论

通过在html页面中对应用程序进行分区,使其包含不受路由影响的部分,并在需要时排除ng应用程序中的单个链接,Asp.NET MVC功能可以成功地与AngularJS混合。

最新更新