MVC和同一项目.net核心中的剃刀页面区域

Posted

技术标签:

【中文标题】MVC和同一项目.net核心中的剃刀页面区域【英文标题】:MVC and areas of razor pages in same project .net core 【发布时间】:2021-09-18 00:03:46 【问题描述】:

我在 MVC 项目中有一个区域。在区域部分,我在 .NET Core 中有 razor pages 项目。如何映射两条路线?当我访问https://localhost:44361/ 时应该运行主项目,如果我访问https://localhost:44361/backend 则应该运行剃须刀页面区域。

【问题讨论】:

if I visit https://localhost:44361/backend then the area of razor pages should be run.是什么意思endpoints.MapRazorPages();时,表示配置了razor页面路由,在路由中加上Area name,就会去到该区域。 【参考方案1】:

由于 Razor 页面默认使用基于文件夹的路由,您可以创建文件夹 Pages/Backend,并使用如下所示的标准设置。

使用区域的相同解决方案:创建文件夹 Areas/Backend/Pages 并使用如下所示的设置。

在启动#ConfigureServices 中

services.AddControllers();
services.AddRazorPages();

在启动#配置中

app.UseEndpoints(endpoints =>

   endpoints.MapRazorPages();
   endpoints.MapControllers();
);

上述两种方法均通过创建 MVC 应用程序进行验证,并通过添加 services.AddRazorPages();endpoints.MapRazorPages(); 添加对 Razor 页面的支持。

有关区域的更多信息: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas?view=aspnetcore-5.0#areas-with-razor-pages

【讨论】:

它在区域中不起作用。所有这些配置都已在 startup.cs 中定义,但仍无法正常工作 > 区域 > 后端 > 页面 edit.razor localhost:59722/backend/edit 仍然无法正常工作 @SameerUllah:我刚刚通过创建一个新的 MVC 应用程序验证了我的答案,然后添加了 services.AddRazorPages();和endpoints.MapRazorPages();,添加目录Pages/Backend,最后在Pages/Backend中添加了一个页面,它正在工作。我还通过添加目录 Areas/Backend/Pages 并在该目录中添加了一个页面来测试使用 Areas。它也可以在启动时没有任何更改。 BR

以上是关于MVC和同一项目.net核心中的剃刀页面区域的主要内容,如果未能解决你的问题,请参考以下文章

剃刀页面是不是位于 mvc 层之上?

.NET 5:可以在 MVC 应用程序的 .cshtml 文件中创建指向注册剃刀页面的链接吗?请阅读说明

剃刀页面视图模型类中的 Url.Action 备用

ASP.Net MVC3 - 将剃刀标记作为参数传递

ASP.Net MVC 3 中的多项目区域

使用 ASP.NET MVC 4 的不同项目中的区域