首页 > 解决方案 > ASP.NET Core 2.2 Web App - 什么告诉它显示 Index.cshtml

问题描述

我正在使用 Visual Studio 2017 和 .NET Core 2.2。

请执行下列操作:

  1. 新建项目并选择 ASP.NET Core Web 应用程序(按 OK)
  2. 这会将您带到第二个对话框,您可以在其中选择 Web 应用程序(具有示例 Razor 页面)或 Web 应用程序(模型-视图-控制器)。

在查看 Startup.cs 时,我想指出这两个选项之间的一个区别:

如果您只选择 Web 应用程序,您将在配置功能的底部看到:

        app.UseMvc();

如果您选择 Web 应用程序(模型-视图-控制器),您将得到:

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

因此,MVC 项目定义了某种类型的路由。这特别告诉我它将默认使用 Home Controller,如果未指定任何操作,则将使用 Index(.cshtml) 操作。

第一个选项(Razor pages),什么都不路由。

我不明白。这是否意味着如果您不定义 MapRoute 它将始终使用 Index(.cshtml) 操作?

因为对于 MVC 项目,如果我只使用:

        app.UseMvc();

并且没有定义 MapRoute,我会得到 404。Razor 应用程序如何定义它的路由(以及在哪里)?

标签: c#asp.net-core

解决方案


推荐阅读