浏览器试图从无效地址加载JS文件,当通过URL访问剃须刀页面时



我已经设置了一个剃刀页面作为我的应用程序的登录页面:

options.Conventions.AddAreaPageRoute("Home","/Home/Index", "");

我的页面都包含在区域中,所以为了更容易地通过url访问它们,我想避免写额外的区域名称,所以从Home/Home/page到Home/Index:

options.Conventions.AddAreaPageRouteModelConvention("Home", "/Home/Index", model =>
{
foreach (var selector in model.Selectors)
{
selector.AttributeRouteModel = new AttributeRouteModel
{
Template = new string(selector.AttributeRouteModel.Template.SkipWhile(c => c != '/').Skip(1).ToArray()),
};
}
});

我还修改了我的应用程序设置:

app.UseMvc(routes =>
{
routes.MapRoute(
name: "Default",
template: "{area=Home}/{page=Index}");
});

我删除了所有其他mapRoutes,包括控制器路由等。

在我添加了这个片段后,我尝试通过/Home/Index访问页面,结果成功了,但我的js脚本没有加载,因此无法运行。然后我删除了前面提到的选项,并试图通过Home/Home/Index访问该页面,但我的脚本仍然没有加载。如果我使用我设置的锚点,它们确实会加载属性:

<a class="nav-bar-brand" asp-area="Home" asp-page="/Home/Index">...</a>

脚本文件包含在Layout:中

<script src="js/site.js" type="text/javascript"></script>

问题似乎是浏览器在错误的位置查找文件,这是"常规"标头包含的"请求URL"https://localhost/Home/Home/js/site.js",而实际上正确的地址是"https://localhost/js/site.js",为什么会发生这种情况,我该如何解决?

<script src="**~/**js/site.js" type="text/javascript"></script>

你必须更新你的代码。(

/

~//strong>

开始使用域根文件夹(