3

什么是 ASP.NET MVC 等效于 ASP.NET WebForms 中的“覆盖无效渲染”?在将输出发送给客户之前,您在哪里有机会进行最后一分钟的处理?

例如,我不会在生产代码中使用它,但会说明当放置在 WebForms 应用程序的 MasterPage 中时清理整个站点<title><head>标记。

    protected override void Render(HtmlTextWriter writer)
    {
        System.IO.StringWriter sw = new System.IO.StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        base.Render(htw);
        htw.Close();
        string h = sw.ToString();
        string fhtml = h.Replace("<title>\r\n\t", "\n<title>")
                             .Replace("\r\n</title>", "</title>")
                             .Replace("</head>","\n</head>");
        // write the new html to the page
        writer.Write(fhtml);
    }

在 ASP.NET MVC 中使用最终文本呈现的最佳方法是什么?

更新:
因此,查看 Andrew Hare 提到的链接(图表),您可以在 View Engine 中执行此操作。你能把东西固定到或改变默认视图引擎的工作方式,还是你必须更换整个东西?

4

2 回答 2

4

这不是 MVC 的工作方式。

您所有的“onprerender”代码都在视图中完成。当您将数据从控制器传递到视图时,您应该已经完成​​了显示整个页面所需的所有处理。

唯一的例外是模型在被视图探测时可能仍会做一些处理。

这可能包括设置局部打开或关闭所需的变量等。

于 2009-02-10T15:49:10.493 回答
0

据我所知,您在 - 方法中唯一想做的Render()就是重新排列该<head>部分中的一些标签。这已经为您在 中正确完成MVC,除非您使用某种自制方式<head>Masterpage.

我建议将标签完全按照您希望它们直接在html您的标记中的方式对齐Master,并确保ViewData["title"]您用来填充标签的内容不以换行符开头或结尾。

于 2009-02-10T15:59:37.210 回答