如何将ViewPage呈现为字符串?

时间:2008-11-21 00:04:29

标签: asp.net-mvc vb.net

我尝试使用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正确呈现为字符串?

1 个答案:

答案 0 :(得分:2)

您是否了解ASP.NET MVC提供的内置缓存?使用框架提供的内容可能更合适。

这是一个很棒的概述; Donut Caching in ASP.NET MVC

据我所知,不能将视图的输出作为字符串(可能是在主页中覆盖Render?)而不开发或使用替代视图引擎。

如果您有兴趣看一下,MVC Contrib中有一些替代视图引擎可用。