1

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

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

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

我还将帐户/管理表单更改为 ajax,但似乎在发布表单后,角度继续进行获取。

我正在使用没有 hashbangs 的 html5Mode。我的目标是始终拥有正常的网址。

有没有办法告诉角度避免某些路线?像 aspnet MVC 中的 IgnoreRoute?

对不起,如果我太含糊了。根据我自己的理解,我只想找到一个将标准 aspnet mvc 与 angular 混合的工作概念,无论它被认为是好是坏。

4

2 回答 2

1

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

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

于 2013-07-27T02:20:32.090 回答
0

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

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

  • ng-app不能嵌套。
  • 只有第一个ng-app会自动引导。
  • 后者ng-app是这样添加的:angular.bootstrap(element[, modules]);

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

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

有一个很好的 mvc4+angular+breeze 项目模板可供研究和测试。(至少需要 VS 2012 Update 2。)
http://www.asp.net/single-page-application/overview/templates/breezeangular-template

结论

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

于 2013-07-27T04:14:15.947 回答