如何从ViewResult拦截HTML,修改它并提供它?

时间:2008-10-14 22:03:55

标签: c# asp.net-mvc

我正在写一个简单的CMS。

我希望能够加载一个View,将其包含在母版页中,然后扫描HTML以便我可以用我自己的博客输出替换一些自定义标记(例如{{blog}})然后提供它取决于浏览器。

如何从ViewResult访问HTML以拦截它?

2 个答案:

答案 0 :(得分:3)

听起来你想写一个ActionFilterAttribute。该属性具有以下方法:

  • OnActionExecuting - 在执行修饰操作之前调用
  • OnActionExecuted - 在调用操作方法之后但在呈现ActionResult之前调用。
  • OnResultExecuting - 在呈现结果之前调用
  • OnResultExecuted - 在呈现结果后调用

此处有一个示例,根据“Content-type”标题返回JSON或XML数据:Create REST API using ASP.NET MVC that speaks both Json and plain Xml

答案 1 :(得分:3)

这将是棘手的,因为ViewResult将其响应直接写入Response.Stream。因此,您可能必须处理Response.Filter属性以将ViewResult输出到MemoryStream,以便您可以在返回ContentResult之前操作内容。所有这些都可能发生在OnResultExecuting上。