将AngularJS 1.2集成到现有的MVC站点中

时间:2013-11-26 04:16:44

标签: asp.net-mvc angularjs

我目前有一个现有的ASP MVC4应用程序,它从控制器返回视图(razor),并希望使用web api和angular js开始将应用程序转换为SPA(单页面应用程序)。我的问题是,我可以慢慢开始转换特定的视图/ URL以通过角度路由,并让其他视图/网址回调MVC应用程序中的遗留控制器,以呈现剃刀视图吗?例如,我有我的主角js文件说明以下

window.EcentralSPA = angular.module('EcentralSPA', ['ngRoute']);

EcentralSPA.config(['$routeProvider', function ($routeProvider) {
  $routeProvider.when('/users', {
    templateUrl: 'app/views/users.html',
    controller: 'UsersController'
  });
}]);


EcentralSPA.controller('UsersController', ['$scope', function ($scope) {
  //TODO
}]);

基本上我只是喜欢/ users url由angular和其他网址处理,以回调Web服务器到正确的mvc控制器并渲染剃刀视图。但是,对于我当前的配置,除了/ users之外的所有调用都返回空数据。有什么建议?谢谢。

1 个答案:

答案 0 :(得分:1)

如果您决定部分申请是SPA而另一部分不适用于某个网址,则需要阻止AngularJS拦截网址更改。为此,当您渲染<a>标记时,请使用以下方法之一忽略angularjs路由

  • 包含目标元素的链接。示例:<a href="/ext/link?a=b" target="_self">link</a>
  • 转到其他域的绝对链接。示例:<a href="http://angularjs.org/">link</a>
  • 以'/'开头的链接,在定义base时会导致不同的基本路径。示例:<a href="/not-my-base/link">link</a>

有关详细信息,请参阅location documentation

此外,我认为您无法使用$route$location服务为您想要在angularjs之外处理的网址执行导航。

整页刷新将始终导致为所有AngularJS SPA页面重新加载完整框架。