ASP MVC区域和Angular Lazy加载路径

问题描述 投票:0回答:1

我有这个工作,但以一种不雅的方式

(1)角度

这将它的输出放在文件夹中

~/Areas/AreaName/Views/ControllerName/ClientApp/(all angular files here)

它有像这样的路径

<button class="k-button" routerLink="AreaName/ControllerName/LazyLoad">LazyLoad</button>&nbsp;
<button class="k-button" [routerLink]="['AreaName/ControllerName/Home']">Home</button>&nbsp;

延迟加载的路径如下所示

{
    path: 'AreaName/ControllerName/LazyLoad',
    loadChildren: './lazyLoad/lazyLoad.module#LazyLoadedModule'
}

(2)MVC

在AreaRegistration中,我有一个Angular代码的附加路径

        context.MapRoute(
            "Angular",
            "AreaName/ControllerName/{*.}",
            new { controller = "ControllerName", action = "Index", id = UrlParameter.Optional }); 

它运行正常,当它试图加载延迟加载部分时,它在路径中查找

/AreaName/lazyLoad-lazyLoad-module.js

我能理解它是否看起来是'/'或'AreaName / ControllerName'或类似但不是那个路径

为了完成这项工作,我在Global.asax.cs Application_Error中有代码,它检测404并将其重定向到正确的路径,即

~/Areas/AreaName/Views/ControllerName/ClientApp/

然后它工作,它加载延迟加载的文件

我假设我需要在Angular方面做些什么,但我不确定是什么?

NB这不是ASP MVC的核心版本

(编辑,更多信息)我在Angular.json中找到了deployUrl。不幸的是,我们的网站可以通过以下任何方式托管:

https://OurSite/TopLevel
https://OurSite/_FurtherDown/TopLevel

href将在index.html中设置,也许是deployUrl的等价物?

angular asp.net-mvc-areas
1个回答
1
投票

这或多或少是重复的

Changing Angular 5 publish url at runtime

但具体到ASP MVC领域所以我会让它站起来

我从Global.asax中删除了404代码

在Index.cshtml文件中我添加了这个

window.DeployUrlFromMyProduct = "@(Request.ApplicationPath)/Areas/MyArea/Views/ControllerName/Ang/";

在app.module.ts中,

declare var __webpack_public_path__: any;
__webpack_public_path__ = (<any>window).DeployUrlFromKiosk;

我知道另一个问题说公共var webpack_public_path不起作用,但似乎对我来说

到目前为止最小的测试,任何问题,我会将它们添加为评论

© www.soinside.com 2019 - 2024. All rights reserved.