我想在大多数应用程序中使用角度模板,但对于某些页面,我想使用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混合。