翼度科技»论坛 编程开发 .net 查看内容

如何将 ASP.NET Core MVC 项目的视图分离到另一个项目

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
如何将 ASP.NET Core MVC 项目的视图分离到另一个项目

在当下这个年代 SPA 已是主流,人们早已忘记了 MVC 以及 Razor 的故事。但是在某些场景下 SSR 还是有意想不到效果。比如某些静态页面,比如追求首屏加载速度的时候。最近在项目中回归传统效果还是不错。
有的时候我们希望将视图(Views)从主项目中分离出来,以提高项目的模块化程度。本文将介绍如何将视图分离到另一个 Razor 类库项目中。这在以前 .NET Framework 下是很常见的,但是 Core 下面的资料太少了,记录一下。
步骤 1:创建 Razor 类库项目

首先,我们需要创建一个新的 Razor 类库项目。在项目文件(.csproj)中,我们需要添加以下配置:
  1. <Project Sdk="Microsoft.NET.Sdk.Razor">
  2. <ItemGroup>
  3.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  4. </ItemGroup><PropertyGroup>
  5. <ItemGroup>
  6.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  7. </ItemGroup> ...
  8. <ItemGroup>
  9.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  10. </ItemGroup><ItemGroup>
  11.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  12. </ItemGroup><AddRazorSupportForMvc>true</AddRazorSupportForMvc>
  13. <ItemGroup>
  14.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  15. </ItemGroup><ItemGroup>
  16.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  17. </ItemGroup><PreserveCompilationContext>false</PreserveCompilationContext>
  18. <ItemGroup>
  19.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  20. </ItemGroup><ItemGroup>
  21.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  22. </ItemGroup><SuppressDependenciesWhenPacking>false</SuppressDependenciesWhenPacking>
  23. <ItemGroup>
  24.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  25. </ItemGroup><ItemGroup>
  26.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  27. </ItemGroup><PackageId>XXX</PackageId>
  28. <ItemGroup>
  29.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  30. </ItemGroup></PropertyGroup>
  31. <ItemGroup>
  32.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  33. </ItemGroup><ItemGroup>
  34. <ItemGroup>
  35.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  36. </ItemGroup><ItemGroup>
  37.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  38. </ItemGroup><FrameworkReference Include="Microsoft.AspNetCore.App" />
  39. <ItemGroup>
  40.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  41. </ItemGroup></ItemGroup>
  42. </Project>
复制代码
步骤 2:复制视图到新项目

然后,我们需要将所有的视图文件从主项目复制到新的 Razor 类库项目中。
步骤 3:主项目引用新项目

接下来,我们需要在主项目中添加对新 Razor 类库项目的引用。这可以通过在主项目的项目文件中添加以下代码来实现:
  1. <ItemGroup>
  2.         <ProjectReference Include="path/to/your/razor/project.csproj" />
  3. </ItemGroup>
复制代码
步骤 4:添加视图的扫描路径

在主项目中,我们需要配置 Razor 视图引擎的视图位置格式,以便它能找到新项目中的视图。这可以通过以下代码来实现:
  1. builder.Services.Configure<RazorViewEngineOptions>(options =>
  2. {
  3.     options.ViewLocationFormats.Add("/Widgets/{1}/{0}" + RazorViewEngine.ViewExtension);
  4.     options.ViewLocationFormats.Add("/Widgets/Shared/{0}" + RazorViewEngine.ViewExtension);
  5. });
复制代码
步骤 5:调整静态资源的路径

最后,如果新项目中包含了静态资源(如 CSS、JavaScript、图片等),并且这些资源放在 wwwroot 文件夹下,那么这些资源会在编译后出现在主项目的 wwwroot/_content/{library project name} 文件夹下。因此,我们需要在 HTML 中使用以下的路径格式来引用这些静态资源:
[code][/code]以上就是将 ASP.NET Core MVC 项目的视图分离到另一个项目的步骤。希望这篇文章能对你有所帮助!
关注我的公众号一起玩转技术



来源:https://www.cnblogs.com/kklldog/p/18147090/split-mvc-view-to-another-project
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
来自手机

举报 回复 使用道具