我试图找到一种方法将一个剃刀页面项目分解成多个项目以使其模块化。
这个想法是我想将与模块相关的功能隔离到不同的项目中,而不是让一个项目来管理所有功能。基本上,我在我的 API 项目中遵循垂直切片清洁架构,我想用剃刀页面来完成同样的事情。
我想象的结构如下:
一个核心的 razor pages 库项目,其中将包含布局、任何共享的部分视图和资源。
每个模块的 razor pages 库项目,其中将包含与模块相关的文件。
主要的 razor pages web 项目,将引用每个模块项目,将包含一些一般视图(例如隐私政策等),并将产生最终结果。
我在 https://github.com/panosru/Playground/tree/master/C%23/ModularRazorPages 处有一个非工作示例,只是为了说明我脑海中的结构。
问题是我在网上找不到任何可以指导我如何将剃刀页面项目拆分为模块的资源,我不确定这是否可行。
以前有没有人试过,如果是,你能给我举一个有帮助的例子吗?
答案 0 :(得分:1)
经过进一步挖掘,我发现了 this article,巧合的是,它于 2021 年 1 月 18 日发布,距我提出问题已近一个月。
通过关注这篇文章,它实际上为我提供了我正在寻求的解决方案,现在我可以轻松地将我的剃须刀页面拆分到项目之间以拥有 separation of concerns 并关注 vertical slice architecture。
诀窍是在 AddRazorSupportForMvc
和 csproj
中使用 Microsoft.AspNetCore.App
指令作为 FrameworkReference
。
基本上,使其工作的最低限度 csproj
是:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
不过,我还是推荐阅读这篇文章,它很有趣。