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


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

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

    步骤 1:创建 Razor 类库项目#

    首先,我们需要创建一个新的 Razor 类库项目。在项目文件(.csproj)中,我们需要添加以下配置:

    <Project Sdk="Microsoft.NET.Sdk.Razor">
    
    	<PropertyGroup>
    	 ...
    		<AddRazorSupportForMvc>trueAddRazorSupportForMvc>
    		<PreserveCompilationContext>falsePreserveCompilationContext>
    		<SuppressDependenciesWhenPacking>falseSuppressDependenciesWhenPacking>
    		<PackageId>XXXPackageId>
    	PropertyGroup>
    
    	<ItemGroup>
    		<FrameworkReference Include="Microsoft.AspNetCore.App" />
    	ItemGroup>
    
    Project>
    
    

    步骤 2:复制视图到新项目#

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

    步骤 3:主项目引用新项目#

    接下来,我们需要在主项目中添加对新 Razor 类库项目的引用。这可以通过在主项目的项目文件中添加以下代码来实现:

    <ItemGroup>
    	<ProjectReference Include="path/to/your/razor/project.csproj" />
    ItemGroup>
    
    

    步骤 4:添加视图的扫描路径#

    在主项目中,我们需要配置 Razor 视图引擎的视图位置格式,以便它能找到新项目中的视图。这可以通过以下代码来实现:

    builder.Services.Configure(options =>
    {
        options.ViewLocationFormats.Add("/Widgets/{1}/{0}" + RazorViewEngine.ViewExtension);
        options.ViewLocationFormats.Add("/Widgets/Shared/{0}" + RazorViewEngine.ViewExtension);
    });
    
    

    步骤 5:调整静态资源的路径#

    最后,如果新项目中包含了静态资源(如 CSS、JavaScript、图片等),并且这些资源放在 wwwroot 文件夹下,那么这些资源会在编译后出现在主项目的 wwwroot/_content/{library project name} 文件夹下。因此,我们需要在 HTML 中使用以下的路径格式来引用这些静态资源:

    <link href="~/_content/{library project name}/css/site.css" rel="stylesheet" />
    <script src="~/_content/{library project name}/js/site.js">script>
    
    

    以上就是将 ASP.NET Core MVC 项目的视图分离到另一个项目的步骤。希望这篇文章能对你有所帮助!

    关注我的公众号一起玩转技术#

  • 相关阅读:
    QImage函数setAlphaChannel
    flat和flatMap方法
    DSPF28335的一句话总结
    Master Theorem
    uniapp-实现微信授权登录
    学习笔记-SSRF
    开发者新手指南:一文汇总 Web3 开发工具
    python中字符串的应用详解
    Golang 获取本地 IP 地址方法
    第06章 MyBatisPlus概述
  • 原文地址:https://www.cnblogs.com/kklldog/p/18147090/split-mvc-view-to-another-project