首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 高效能開發實戰:打造企業級 ASP.NET 樹狀列表控件(中)—— ViewState 與 XSLT 架構深度解析

     編輯:關於C語言

ViewState 序列化機制

ASP.NET 框架在要求 Web 控件儲存資料至 ViewState 時,會自動呼叫 SaveViewState 方法;反之從 ViewState 載入資料時,則呼叫 LoadViewState。能夠保存在 ViewState 中的物件,必須支援二進位序列化。這正是 SkyTreeNode 與 SkyTreeNodeList 類別前標註 [System.Serializable()] 屬性的原因。

控件架構複雜度與技術棧

SkyTreeViewControl 原始碼結構相對複雜,開發者需具備以下知識體系:

  • ASP.NET 自訂控件開發進階知識
  • JavaScript 客戶端腳本技術
  • IE 瀏覽器專有的 XML 資料島 技術

XML 資料島與跨瀏覽器考量

XML 資料島(<xml> 標籤)是微軟對 HTML 標準的擴展,僅 IE 支援。若需相容 Firefox 等非 IE 瀏覽器,可改用 XMLHttpRequest ActiveX 元件從伺服器下載 XML 文件。本控件刻意示範 XML 資料島用法,優點在於可將 XML 文件內嵌於 HTML 文件中,減少部署檔案數量、降低系統複雜度。若專案明確限定客戶端為 IE 環境,採用 XML 資料島是合理選擇。

核心 XSLT 模板文件:SkyTreeViewControl.xslt

此 Web 控件的關鍵資源文件為 SkyTreeViewControl.xslt,編譯時需設定為「嵌入的資源」。其主體結構如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="https://www.w3.org/1999/XSL/Transform" version="1.0">
  <!-- 文件說明與版權資訊 -->
  <xsl:output method="html" indent="no" />
  <!-- ***************** 主模板:XSLT 轉換入口 ******************** -->
  <xsl:template match="/*">
    ... 主模板內容 ...
  </xsl:template>
  <!-- ******************* 輸出單一樹狀節點 *************************** -->
  <xsl:template name="TreeNode">
    ... 子模板內容 ...
  </xsl:template>
</xsl:stylesheet>

<xsl:output method="html" indent="no" /> 指令宣告輸出為 HTML 格式且不縮排,減小輸出體積。

主模板邏輯詳解

主模板為 XSLT 轉換進入點,核心邏輯:

  1. 建立 NodeID 變數,依優先序取值:@RootID → @ID → generate-id(.)。
  2. 若存在子節點,建立 <table> 容器,ID 為 {$NodeID}_table。
  3. 遍歷所有根節點(<xsl:for-each select="Node">),對每個節點呼叫 TreeNode 子模板,傳遞 Level=1 參數,啟動遞迴生成 HTML 元素流程。

此設計奠定了整棵樹狀結構在 XSLT 層面的遞迴渲染基礎。

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