You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC 6/7:登录页_Layout配置异常问题求助

解决ASP.NET Core MVC 6/7登录页布局异常问题

问题根源

你的问题核心是:登录页(尤其是用Identity脚手架生成的页面)默认绑定了Identity区域自带的布局,而非你在~/Views/Shared/自定义的_Layout.cshtml。手动指定Layout = "_Layout";后,要么触发了Identity默认的导航组件加载,要么你的自定义布局里不小心混入了默认登录片段代码。

具体解决办法

办法1:给登录页单独做个极简布局

  1. 在~/Views/Shared/新建_LoginLayout.cshtml,只保留登录页必需的结构(完全去掉导航栏):
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - 你的站点名称</title>
    <link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
    <div class="login-container">
        @RenderBody()
        @RenderSection("Scripts", required: false)
    </div>
</body>
</html>
  1. 在登录页顶部指定这个布局:
@{
    Layout = "_LoginLayout";
    ViewData["Title"] = "登录";
}

办法2:直接禁用登录页的布局

如果登录页不需要任何共享布局,直接在登录页顶部写:

@{
    Layout = null;
    ViewData["Title"] = "登录";
}

注意:如果之前不声明Layout就显示不了,大概率是因为登录页是Identity生成的,默认用了Identity区域的布局。设置Layout = null后,你需要在登录页里写完整的HTML结构(包括<html>、<head>、<body>标签)。

办法3:修改Identity区域的默认布局(用了Identity脚手架才需要)

如果登录页在~/Areas/Identity/Pages/Account/下,它默认用的是~/Areas/Identity/Pages/_Layout.cshtml:

  • 打开这个文件,直接删掉里面的默认导航栏代码;
  • 或者把这个布局的内容换成你自定义的_Layout.cshtml内容,但要确保去掉@await Component.InvokeAsync("LoginPartial")这类会加载默认导航的代码。

额外排查点

  • 检查你自定义的_Layout.cshtml里有没有写@await Html.PartialAsync("_LoginPartial"),这行代码会引入默认的登录导航栏;
  • 确认[Authorize]特性只加在DashboardController上,别误加到登录页的控制器/动作上。

内容的提问来源于stack exchange,提问作者Abdullah Al Mahmud Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 03:57:46