我已经设置了一个剃刀页面作为我的应用程序的登录页面:
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>
开始使用域根文件夹(