首页 > 解决方案 > 通过 URL 访问剃须刀页面时,浏览器尝试从无效地址加载 JS 文件

问题描述

我已将剃须刀页面设置为我的应用程序的登录页面:

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>

脚本文件包含在布局中:

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

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

标签: javascriptc#asp.net-mvcasp.net-core

解决方案


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

您必须更新您的代码。(

/

或者

~/

从域根文件夹开始)


推荐阅读