如何在同一个项目中同时拥有 MVC 和 Razor 页面?

fah*_*mze 8 c# asp.net-mvc asp.net-core-mvc asp.net-core razor-pages

我有一个带有 Razor 页面的 ASP.NET Core 应用程序,我想利用 MVC 的优势。

\n

我添加了

\n
    \n
  • 包含 Views 的 Controllers 文件夹
  • \n
  • 以及services.AddMvc()启动
  • \n
  • 和它的另一个端点。
  • \n
\n

我确实运行了该项目并测试了是否

\n
    \n
  • 返回简单视图
  • \n
  • 如果默认地址后添加的控制器和操作有效
  • \n
\n

但它不起作用并返回

\n
\n

“无法找到此本地主机页面\xe2\x80\x99”。

\n
\n

您能帮我如何配置我的应用程序吗?

\n

Yiy*_*You 11

如果要将 MVC 添加到 Razor Page 项目:

将服务添加到startup.cs

首先需要在startup.cs中添加services.AddControllers();ConfigureServices配置mvc路由:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
    services.AddControllers();
    ...
}

// This method gets called by the runtime. 
// Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}
Run Code Online (Sandbox Code Playgroud)

添加文件夹

其次,您需要添加两个具有这些名称的文件夹

  • Controllers
  • Views

然后复制

  • Pages/Shared文件夹包含 _Layout.cshtml
  • _ValidationScriptsPartial.cshtml

Views文件夹。

并复制

  • Pages/_ViewImports.cshtmlViews/_ViewImports.cshtml
  • Pages/_ViewStarts.cshtmlViews/_ViewStarts.cshtml

这是一个项目结构:

MVC 和 Razor 文件夹结构