如何将 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>true</AddRazorSupportForMvc>
<PreserveCompilationContext>false</PreserveCompilationContext>
<SuppressDependenciesWhenPacking>false</SuppressDependenciesWhenPacking>
<PackageId>XXX</PackageId>
</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<RazorViewEngineOptions>(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 项目的视图分离到另一个项目的步骤。希望这篇文章能对你有所帮助!

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

如何将 ASP.NET Core MVC 项目的视图分离到另一个项目的更多相关文章

  1. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

    标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11155 ...

  2. ASP.NET Core MVC 中自定义视图

    ASP.NET Core MVC 中的视图发现 ASP.NET Core MVC 中有提供了几个 View()的重载方法. 如果我们使用下面提供 View()的重载方法,它将查找与 Action 方法 ...

  3. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】

    Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Changing vi ...

  4. ASP.NET Core MVC的Razor视图中,使用Html.Raw方法输出原生的html

    我们在ASP.NET Core MVC项目中,有一个Razor视图文件Index.cshtml,如下: @{ Layout = null; } <!DOCTYPE html> <ht ...

  5. Asp.Net Core MVC控制器和视图之间传值

    一.Core MVC中控制器和视图之间传值方式和Asp.Net中非常类似 1.弱类型数据:ViewData,ViewBag 2.强类型数据:@model 二.代码 实例  1.ViewData pub ...

  6. 在Asp.Net Core MVC 3.0 视图运行时编译

    在正常情况下,视图在生成的时候就会变为 xxx.Views.dll,在开发的时候,这样很不方便,因为很多的时候,我们只是修改一个样式,调整一些JavaScript代码,这个时候要把项目调试暂停下来,生 ...

  7. 如何在多个项目中分离Asp.Net Core Mvc的Controller和Areas

    前言 软件系统中总是希望做到松耦合,项目的组织形式也是一样,本篇文章将介绍在ASP.NET CORE MVC中怎么样将Controller与主网站项目进行分离,并且对Areas进行支持. 实践 1.新 ...

  8. ASP.NET Core MVC 源码学习:Routing 路由

    前言 最近打算抽时间看一下 ASP.NET Core MVC 的源码,特此把自己学习到的内容记录下来,也算是做个笔记吧. 路由作为 MVC 的基本部分,所以在学习 MVC 的其他源码之前还是先学习一下 ...

  9. ASP.NET Core MVC之ViewComponents(视图组件)

    前言 大概一个来星期未更新博客了,久违了各位,关于SQL Server性能优化会和ASP.NET Core MVC穿插来讲,如果你希望我分享哪些内容可以在评论下方提出来,我会筛选并看看技术文档来对你的 ...

  10. 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序

    使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...

随机推荐

  1. Springboot-1.5.10.RELEASE 升级到 2.2.4.RELEASE版本遇到的一些问题总结

    由于现在springboot的主流版本都已经是2.x的了,因此自己也打算将项目中使用的springboot1.5.10升级到2.2.4这个版本. 自己也能够预料得到,在升级过程中肯定会遇到各种各样的问 ...

  2. 创建 nest-websocket 服务 用于mock单点登录开发

    需求 有个单点登录的任务,但是都是现场的服务 api 和 websocket 都在现在 开发本机mock服务 本地搭建环境先模拟一下 资料 NestJS WebSocket 开始使用 https:// ...

  3. do{}while(0)用法

    更安全的展开宏定义 #define DOSOMETHING foo1(); foo2(); if(condition) DOSOMETHING /* if(condition) foo1(); foo ...

  4. 视野修炼-技术周刊第76期 | Rolldown 开源

    欢迎来到第 76 期的[视野修炼 - 技术周刊],下面是本期的精选内容简介 强烈推荐 Rolldown 开源 - Rollup 的锈化版 前端调试工具超全汇总 开源工具&技术资讯 OhMyLi ...

  5. Welcome to YARP - 2.1配置功能 - 配置文件

    目录 Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 ...

  6. Android 开发Day7

    <project version="4"> <component name="ExternalStorageConfigurationManager&q ...

  7. 三维模型3DTile格式轻量化在三维展示效果上的重要性分析

    三维模型3DTile格式轻量化在三维展示效果上的重要性分析 三维模型3DTile格式轻量化在三维展示效果上扮演着至关重要的角色.随着计算机图形学和虚拟现实技术的不断发展,我们已经可以创建和渲染非常精细 ...

  8. npm ERR! code ENOENT npm ERR! syscall open npm ERR! path C:\Users\shuzi\Desktop\保密文件项目\test-ui/package.json npm ERR! errno -4058

    打开一个新的项目,因为当前项目文件夹下没有npm,"dev": "npm run start:dev",所以所以没有展示对应的运行图,如下图: 打开一个新的前端 ...

  9. python 写的随机抽奖小程序实现批量抽奖功能

    设计思路: 1:导入EXCEL文件中,含有ID,Name两个字段的文件数据做为抽奖池 2:设置奖项,可自定义,放在.txt文件中去读取出来就可以 3:实现单轮可以抽多个名单的功能, 4:保存为.csv ...

  10. C# AES CBC模式 加密和解密

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...