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

ASP.NET MVC 視圖片段快取(中):更實用的 API 設計

     編輯:關於ASP.NET

基礎版 Html.Cache 接受 Func<string> 委托,雖能快取字串片段,但大段 HTML 仍需建立 Partial View,使用不便:

<%= Html.Cache(..., () => Html.Partial("MyPartialViewToCache")) %>

理想的用法應像標記一樣「包圍」現有程式碼:

<% Html.Cache("cache_key", DateTime.Now.AddSeconds(10), () => { %>

<% foreach (var article in Model.Articles) { %>
<p><%= article.Body %></p>
<% } %>

<% }); %>

從 Action 委托捕獲輸出

這要求方法簽名改為 Action:

public static void Cache(
    this HtmlHelper htmlHelper,
    string cacheKey,
    CacheDependency cacheDependencies,
    DateTime absoluteExpiration,
    TimeSpan slidingExpiration,
    Action action)
{
    // 實作邏輯
}

關鍵挑戰在於:Action 執行時將內容寫入 HtmlTextWriter,我們如何攔截並取得生成的字串?答案在於 Page.CreateHtmlTextWriter 方法:

protected virtual HtmlTextWriter CreateHtmlTextWriter(System.IO.TextWriter tw) { ... }

透過自訂 HtmlTextWriter 實作,我們能在委托執行期間捕獲輸出,實現真正的「標記式」片段快取體驗。

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