在MVC3中更改HTML输出

时间:2011-01-26 12:18:30

标签: asp.net-mvc razor

在我的MVC3应用程序中,当用户使用IE<时,我希望删除输出的所有HTML5标签。 9,以避免使用前端解决方法。

我已经在控制器和HttpModule内部使用了ActionFilterOnResultExecutedApplication_Start方法。

到目前为止,我想我需要使用以下内容从HttpApplication.Context.Response.OutputStream获取字符串输出:

HttpApplication application = (HttpApplication)source;
HttpResponse response = application.Context.Response;
StreamReader sr = new StreamReader(stream);
string content = sr.ReadToEnd();

但我得到的是同样的错误Stream was not readable。 我可以使用context.Response.Write写回复。

从阅读SO和谷歌,MVC似乎没有相同的“页面生命周期”有webforms(我只是覆盖Render,它工作正常),这使得sens。

所以我的问题是如何在MVC中将HTML作为字符串获取?有没有人试图操纵html输出?

4 个答案:

答案 0 :(得分:7)

我认为您应该可以使用ActionFilter来执行此操作。我见过有人在this blog post.this post修改输出流的示例。

答案 1 :(得分:3)

HTML5是向后兼容的,所以在任何浏览器上都可以免费使用此默认输出。诸如IE6之类的过时浏览器仍然可以正确呈现,甚至不显眼的验证也可以正常工作。所以我的建议是保持输出不变。

答案 2 :(得分:0)

为什么不使用javascript?只需确定什么是用户浏览器并删除所需的html。 JQuery有很好的方法可以做到这一点。

答案 3 :(得分:0)

为了遵循MVC模式的概念,我会根据浏览器是否支持HTML 5而不是尝试提取输出来使用不同的View实现。另一种方法是通过第三方库使用控件,当浏览器不支持所有最新功能(或者库可以独立实现控件)时,第三方库可以优雅地分解。与ASP.NET MVC一起提供的JQuery是一个理想的,有许多可用的控件可以覆盖大多数HTML5标签。