【问题标题】:how to map a default controller on aspnet core mvc without the default layout如何在没有默认布局的asp net core mvc中映射默认控制器
【发布时间】:2020-03-19 19:04:25
【问题描述】:

我创建了一个 .NET Core 3.1 ASPNET 项目。默认情况下,启动页面使用 Home Controller/Index 页面。

 app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });

但是我想创建一个登录页面,所以我创建了一个带有新操作的新控制器并传递了参数,但它不是只呈现登录页面,而是呈现在“@RenderBody()”内部布局项目。在 .NET MVC5 上,它只呈现我设置的页面。我已经尝试过:

app.UseMvc(routes =>
{
   routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});

这是同样的事情。登录页面它没有与布局分开呈现

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    这与路由无关。

    如果您查看 Views 文件夹,将会有一个名为 _ViewStart.cshtml 的文件,其中包含以下代码:

    @{
        Layout = "_Layout";
    }
    

    _ViewStart.cshtml 为每个视图运行,因此默认情况下它将布局页面设置为 _Layout.cshtml。

    有两种选择:

    • 从 _ViewStart.cshtml 中删除代码,这意味着需要在每个视图中显式设置 Layout
    • 在您的登录视图中,将Layout 设置为null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      相关资源
      最近更新 更多