C# 中使用插值原始字符串安全拼接动态 HTML 模板

云伟同学_7314

云伟同学_7314

2026-09-03

534人浏览

原创

C# 中使用插值原始字符串安全拼接动态 HTML 模板

本文详解如何在 C# 中正确将动态 URL 注入多行 HTML 字符串模板,避免语法错误与转义问题,推荐使用 C# 11+ 的插值原始字符串($$"""...""")结合双大括号转义,实现清晰、安全、可维护的 HTML 字符串生成。

本文详解如何在 c# 中正确将动态 url 注入多行 html 字符串模板,避免语法错误与转义问题,推荐使用 c# 11+ 的插值原始字符串($$"""...""")结合双大括号转义,实现清晰、安全、可维护的 html 字符串生成。

在构建邮件模板、导出 HTML 报告或生成前端嵌入内容时,常需用 C# 方法返回含动态参数的 HTML 字符串。但直接在 @"" 原始字符串中拼接变量(如 <a href="+%20url%20+%20"></a>)会破坏原始字符串结构,导致编译错误——因为 @"" 内部不支持表达式拼接,且引号嵌套极易出错。

✅ 正确做法:使用插值原始字符串(Interpolated Raw String)(C# 11 起正式支持)。它兼具原始字符串的免转义特性与插值功能,且通过 $$ 前缀明确标识插值上下文,同时用 {{ }} 表示字面量 { 和 }(用于保留原有 {2}、{3} 等占位符,供后续 string.Format() 使用)。

以下是重构后的 LoadRemovedSheetTemplate 方法示例:

HTML Extract
HTML Extract

使用 MinerU 从 HTML 页面和文件中提取内容,将 HTML 转换为保持标题、列表、表格及文本层次结构的干净、结构化 Markdown。F...

下载
private static string LoadRemovedSheetTemplate(string url)
{
    return $$"""
    
    
        <title></title><meta charset="utf-8"><div class="container" style="margin: 0; padding: 0; box-sizing: border-box; background-color: #f9f9fa; margin-left: auto; margin-right: auto; width: max-content;">
            <div class="main-content-section" style="background-color: #fff; height: 600px; margin-bottom: 20px; box-shadow: rgba(0, 0, 0, 0.02) 0px 1px 3px 0px, rgba(27, 31, 35, 0.15) 0px 0px 0px 1px; padding: 25px; height: max-content; width: max-content;">
                <div class="top-logo-section" style="text-align: center;">
                    <div style="height: 100px; margin-bottom: 10px;">
                        @@##@@
                    </div>
                </div>
                <p style="font-size: 14px; font-family: sans-serif; line-height: 25px; color: #000000; letter-spacing: 0.2px;">Dear {{2}},</p>
                <p style="font-size: 14px; font-family: sans-serif; line-height: 25px; color: #000000; letter-spacing: 0.2px;">
                    Claim has been removed from the audit {{3}}.
                </p>
                <p style="font-size: 14px; font-family: sans-serif; line-height: 25px; color: #000000; letter-spacing: 0.2px;">
                    <a href="%7B%7Burl%7D%7D/AuditProject/OngoingAudits">Click here</a> to view.
                </p>
                <p style="font-size: 14px; font-family: sans-serif; line-height: 25px; color: #000000; letter-spacing: 0.2px;">Thank You,</p>
                <p style="font-size: 14px; font-family: sans-serif; line-height: 25px; color: #000000; letter-spacing: 0.2px;">CATS Support</p>
                <div class="bottom-logo-section" style="text-align: center;">
                    <div style="margin:0;">
                        <p style="font-size: 14px; font-family: sans-serif; color: #000000;">
                            Powered By:
                        </p>
                        @@##@@
                    </div>
                </div>
            </div>
        </div>
    
    
    """;
}

? 关键要点说明:

  • ✅ $$"""...""" 启用插值原始字符串:无需转义双引号(")、反斜杠(\)或换行符,HTML 结构天然对齐;
  • ✅ {{url}} 表示插入 url 变量值;{{2}} 和 {{3}} 是字面量双大括号,会被原样保留为 {2}、{3},便于后续调用 string.Format(result, arg1, arg2) 填充;
  • ❌ 避免混合 @"" 与 + 拼接:原始字符串内无法执行表达式,强行拼接会中断字符串字面量,引发 CS1056(意外字符)等编译错误;
  • ⚠️ 注意 URL 安全性:若 url 来自用户输入,务必先校验并清理(如使用 Uri.IsWellFormedUriString(url, UriKind.Absolute)),防止 XSS 或协议混淆(如注入 javascript:);
  • ? 进阶建议:对于复杂 HTML 模板,推荐迁移到 Razor 视图引擎或专用模板库(如 Scriban、Fluid),提升可测试性与可维护性。

通过插值原始字符串,你既能保持 HTML 的可读性与结构完整性,又能安全、简洁地注入动态值——这是现代 C# 处理内联 HTML 模板的最佳实践。

BizAnalytix Technologies

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

html c#

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c#是什么意思
c#是什么意思

C#是一种通用的面向对象编程语言,它在.NET框架上运行,可用于开发各种类型的应用程序。本专题为大家提供c#相关的各种文章、以及下载和课程。

2023.08.08

872

5

什么是c#
什么是c#

C#(读作C Sharp)是一种现代的、通用的、面向对象的编程语言。它由微软公司开发,于2000年首次发布,主要用于开发Windows桌面应用程序、Web应用程序、移动应用程序以及游戏开发等领域。C#是一种类型安全和托管的编程语言,它结合了C++的强大性能和C语言的简单易学特点,并引入了许多新的特性和概念,如委托、属性、泛型和异步编程等,以提高开发效率和代码可维护性。

2023.08.31

2331

3

C#中base关键字的用法
C#中base关键字的用法

在C#中,base关键字用于访问当前类的基类成员,这包括基类的字段、属性、方法、构造函数、索引器以及事件。想了解更多C#的相关内容,可以阅读本专题下面的文章。

2024.03.13

805

8

C#Task用法
C#Task用法

Task在C#中是用于表示异步操作的对象,它位于System.Threading.Tasks命名空间中。想了解更多C#中各种用法的相关内容,可以阅读本专题下面的文章。

2024.03.14

2575

11

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

2026.02.03

272

18

C# 多线程与异步编程
C# 多线程与异步编程

本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

2026.02.06

349

20

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

2026.03.11

591

24

C# Unity游戏开发与ECS架构实践
C# Unity游戏开发与ECS架构实践

本专题聚焦 C# 在 Unity 游戏开发中的应用,系统讲解 ECS(Entity-Component-System)架构设计、游戏对象管理、性能优化与内存控制策略。通过实际游戏案例,帮助开发者构建高性能、结构清晰的游戏系统,提高游戏开发效率与运行性能。

2026.04.13

289

20

html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

5075

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 209人学习