首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> C# 入門

C# 產生靜態頁面兩大法寶:模板替換與 RazorEngine 實戰

     編輯:C# 入門

早期 ASP.NET WebForms 時代常用模板替換產生靜態 HTML,現代專案推薦使用 RazorEngine 或 Scriban 等成熟模板引擎。本文展示傳統字串替換法與 RazorEngine 兩種實作,並比較優劣。

方法一:簡易模板字串替換 (零依賴)

template.html


<!DOCTYPE html>
<html>
<head><title>$title$ 靜態頁 Demo</title></head>
<body>
<table width="100%" border="0" bgcolor="#339900">
  <tr><td height="34" align="center" bgcolor="#FFFFFF"><span class="STYLE1">$title$</span></td></tr>
  <tr><td height="42" bgcolor="#FFFFFF">內容:$content$</td></tr>
</table>
</body>
</html>

後端代碼


public static string GenerateStaticPage(string templatePath, string title, string content)
{
    string template = File.ReadAllText(templatePath);
    string html = template
        .Replace("$title$", title)
        .Replace("$content$", content);
    return html;
}

// 使用
string html = GenerateStaticPage("template.html", "產品介紹", "

這是詳細內容...

"); File.WriteAllText("product.html", html, Encoding.UTF8);

方法二:RazorEngine (功能強大、支援邏輯、佈局、IntelliSense)

安裝

Install-Package RazorEngine.Core

模板 (Razor 語法 .cshtml)


@model dynamic
<!DOCTYPE html>
<html>
<head><title>@Model.Title 靜態頁 Demo</title></head>
<body>
<h1>@Model.Title</h1>
<div>@Raw(Model.Content)</div>
@if (Model.ShowFooter)
{
    <footer>@Model.FooterText</footer>
}
</body>
</html>

渲染代碼


using RazorEngine;
using RazorEngine.Templating;

public static string RenderRazorTemplate(string templatePath, object model)
{
    string template = File.ReadAllText(templatePath);
    return Engine.Razor.RunCompile(template, "templateKey", null, model);
}

// 使用
var model = new 
{ 
    Title = "產品介紹", 
    Content = "

這是詳細內容...

", ShowFooter = true, FooterText = "© 2024 Company" }; string html = RenderRazorTemplate("template.cshtml", model); File.WriteAllText("product.html", html, Encoding.UTF8);

兩者對比

維度字串替換RazorEngine
依賴無NuGet 套件
邏輯支援無 (純替換)完整 C# (if/foreach/func/partial)
佈局/區塊不支援支援 @RenderBody, @RenderSection
編譯檢查執行時才知錯誤編譯時檢查 (VS IntelliSense)
效能極快首次編譯較慢,後續快取極快
適用場景極簡單、無邏輯、零依賴需求複雜報表、郵件模板、CMS 靜態化

現代替代:Scriban (輕量、無 IL 生成、AOT 友善)


// NuGet: Scriban
using Scriban;

var template = Template.Parse(File.ReadAllText("template.scriban"));
string html = template.Render(model); // model 為 anonymous object 或 ScriptObject

Scriban 語法類似 Liquid/Jinja2,無需編譯 IL,適合 .NET Native/AOT、Source Generator 場景。

最佳實務建議

  1. 新專案優先 RazorEngine (團隊熟悉 Razor) 或 Scriban (輕量、跨平台)。
  2. 模板檔案納入版控,視為程式碼一部分進行 Code Review。
  3. 靜態化輸出目錄與 Web 根目錄分離,配合 CDN 快取策略。
  4. 大量產生時使用並行處理 (Parallel.ForEach) 提升吞吐量。

選對模板引擎,讓靜態頁面產生從「字串拼湊」進化為「結構化開發」,可維護性與擴展性雙贏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved