2008-11-21 107 views
2

我試圖用ASP.NET MVC實現簡單的ViewPage緩存,但是當它有一個母版頁時,我無法讓頁面正確呈現到自定義的HtmlTextWriter中。如何將ViewPage渲染爲字符串?

我試過壓倒Render。如果我只是簡單地調用基礎實現,那麼一切都可以正確呈現。如果我呈現給自己的作者,然後寫入該字符串,那麼頁面內容將被加密。

Imports System.IO 

Public Class CachedViewPage 
Inherits System.Web.Mvc.ViewPage 

Protected Overrides Sub Render(ByVal writer As HtmlTextWriter) 
    'MyBase.Render(writer) 
    'Return 

    Dim stringView As String 
    Using sw As New StringWriter 
     Using w As New HtmlTextWriter(sw) 
      MyBase.Render(w) 
     End Using 
     stringView = sw.ToString() 
    End Using 
    writer.Write(stringView) 
End Sub 

End Class 

這似乎是MasterPage,ViewPage和HtmlTextWriter之間的聯繫。

我該如何正確渲染這個ViewPage到一個字符串?

回答

2

您是否知道ASP.NET MVC提供的內置緩存?使用框架提供的內容可能更合適。

這是一個很好的概述; Donut Caching in ASP.NET MVC

據我所知,無法開發或使用替代視圖引擎,無法將視圖的輸出作爲字符串(也許如果您重寫母版頁中的渲染?)。

如果您有興趣看一下MVC Contrib有一些可供選擇的視圖引擎。