我有这个工作,但以一种不雅的方式
(1)角度
这将它的输出放在文件夹中
~/Areas/AreaName/Views/ControllerName/ClientApp/(all angular files here)
它有像这样的路径
<button class="k-button" routerLink="AreaName/ControllerName/LazyLoad">LazyLoad</button>
<button class="k-button" [routerLink]="['AreaName/ControllerName/Home']">Home</button>
延迟加载的路径如下所示
{
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的等价物?
这或多或少是重复的
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不起作用,但似乎对我来说
到目前为止最小的测试,任何问题,我会将它们添加为评论