由於路線根據順序而優先,所以您只需要明確您的路線在您的MVC路線中的順序。例如,它看起來像
/app/Facturacion/
是您希望Angular運行的位置。因此,在你的MVC路線,在RouteConfig
routes.MapRoute(
name: "ngRoute",
url: "app/Facturacion/{*angularRoute}",
defaults: new {controller = "Facturacion", action = "Index" }
);
所以現在添加爲第一條路線,任何時候你打的路線開始應用/ Facturacion /,棱角分明的路線將接管。否則它將跳過並繼續使用MVC路由。如果有一個特定的MVC路徑使用與angular(/ app/Facturacion /)相同的路徑,請將其添加到RouteConfig中的ngRoute上方,這將繼續運行MVC而不是角度。
routes.MapRoute(
name: "myMvcRoute",
url: "app/Facturacion/someRoute",
defaults: new {controller = "Facturacion", action = "SomeAction" }
);
確保在您的FacturacionController該指數操作返回查看,並在您查看,添加您的角度腳本和角碼。視圖的例子會是這樣的
@{
ViewBag.Title = "Facturacion";
}
@section head{
<base href="/"> //Add a head section in your layout (make it optional)
}
@section scripts{
@Scripts.Render("~/bundles/angularjs")
@Scripts.Render("~/bundles/facturacionSPA")
}
<div ng-app="facturacionApp">
<div ng-view></div>
</div>
你角路線看起來像
$routeProvider.when('/app/Facturacion/MantenimientoFacturas', {
templateUrl: '/Facturacion/MantenimientoFacturas',
controller: 'FacturasController'
}).when('/app/Facturacion/MantenimientoOrdenes', {
templateUrl: '/Facturacion/MantenimientoOrdenes',
controller: 'OrderController'
}).otherwise({
redirectTo: '/ServiceDesk/starter',
});
此外,角模板應該是普通的HTML文件,而不是局部視圖。更好地堅持角的東西和MVC的mvc東西角,不要混在我看來!
編輯: 如果「/的ServiceDesk /起動器」是一個MVC的路線,你不想角路由到它,你可以做這樣的事情在你的角度控制器:
if ($location.url().indexOf('/ServiceDesk/starter') >= 0 && supports_history_api()) $window.location.href = '/ServiceDesk/starter';
代碼supports_history_api()爲完整性,這決定了我是否使用$ locationProvider的html5模式,因爲我需要舊的IE來工作
function supports_history_api() {
return !!(window.history && history.pushState);
}
謝謝你的回覆!我有這個疑問,如果我映射此路線:routes.MapRoute( name:「myMvcRoute」, url:「app/Facturacion/someRoute」, 默認值:新{controller =「Facturacion」,action =「SomeAction」} );在MVC中,但不是在$ routeProvider中,應用程序從未打過網址;它只會將我重定向到.otherwise,即使我刪除。其他方式,它會重定向到基礎href,它看起來像我強制添加$ routeProvider上的每條路線,我是嗎? – user3542595
是的,角度的應用程序永遠不會打這個網址,我說如果你想運行一個正常的MVC網址,而不是運行角度的應用程序。但是我想從angular角度加載這個url來退出mvc,使用$ window.location.href,不要使用角度$ location(我總是這樣做)。所以要從角度到mvc,使用$ window.location.href = yourMVCroute。要保持角度,請使用$ location。 – garethb
請參閱編輯我的答案 – garethb