我尝试使用ASP.NET MVC实现简单的ViewPage缓存,但是当它有一个母版页时,我无法将页面正确呈现到自定义的HtmlTextWriter中。
我尝试重写渲染。如果我只是调用基本实现,那么一切都正确呈现。如果我渲染到我自己的编写器然后编写该字符串,那么页面内容就会被打乱。
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正确呈现为字符串?
答案 0 :(得分:2)
您是否了解ASP.NET MVC提供的内置缓存?使用框架提供的内容可能更合适。
这是一个很棒的概述; Donut Caching in ASP.NET MVC
据我所知,不能将视图的输出作为字符串(可能是在主页中覆盖Render?)而不开发或使用替代视图引擎。
如果您有兴趣看一下,MVC Contrib中有一些替代视图引擎可用。