我有这个工作,但是风格很不雅
(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.ascx.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有一个等效项?
答案 0 :(得分:1)
这或多或少是
的重复项Changing Angular 5 publish url at runtime
但是特定于ASP MVC领域,所以我会坚持下去
我已经从Global.ascx中删除了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;
我知道另一个问题是,公共变量 webpack_public_path 不起作用,但对我来说似乎
到目前为止,最低限度的测试是任何问题,我将其添加为评论