2016-09-08 36 views
0

我在ASP.NET MVC 5项目中使用AngularJS 2,我不使用Angular提供的路由,只依赖于MVC路由策略。AngularJS 2受ASP.NET MVC中的URL影响

奇怪的是,似乎AngularJS看的URL,只有当我的路线“域名/控制器”上,如果我的路线为“域名/控制器/”上加载正确“域名/控制器/动作”我的角的应用程序没有加载,我必须在浏览器中出现以下错误:

enter image description here

我用下面的脚本加载引导程序我:

<script src="~/Scripts/systemjs.config.js"></script> 
<script> 
    System.import('../tsScripts/boot').catch(function (err) { 
     console.error(err); 
    }); 
</script> 

我boot.ts文件:

///<reference path="./../typings/globals/core-js/index.d.ts"/> 
import {bootstrap} from '@angular/platform-browser-dynamic'; 
import {HTTP_PROVIDERS} from '@angular/http'; 

import {AppComponent} from './app'; 

bootstrap(AppComponent, [HTTP_PROVIDERS]); 

我不知道为什么角(与框架的未来或另一部分)不兼容与MVC路由,或者什么是错我的执行。

+2

Angular2是一个单页面应用程序框架,所以没有使用它的路由器类型来破坏整个想法。看起来你有SystemJs配置的问题。 – rook

+0

我怀疑它也在SystemJS配置文件中。您可能需要发布内容。它定义从哪里下载文件。基础路径需要根据当前路线进行更新。 (但是正如@rook所提到的,由于Angular 2不打算在用户浏览时反复加载,所以不太可能这样做)。 – WiredPrairie

+0

这是我的SystemJs配置http://pastebin.com/2JyvhcNK 我对AngularJs感兴趣,因为它的MV *功能,但我想保留从ASP.NET MVC的导航/路由/身份验证策略。但它似乎不是我需要的好工具。 – NicoC

回答

1

我遇到了同样的问题, 我根本解决它把这个代码放到_Layout.cshtml(以便适用于所有视图)的标签的

<head> 
    <base href="/"> 
    ... 
</head> 

Angular official doc


您也可以修复它这样

import {APP_BASE_HREF} from '@angular/common'; 

@NgModule({ 
    ... 
    imports: [RouterModule], 
    providers: [{provide: APP_BASE_HREF, useValue : '/' }] 
]);