2011-01-26 53 views
3

在我的MVC3應用程序中,當用戶使用IE避免使用前端解決方法時,我想刪除輸出的所有HTML5標記。更改MVC3中的HTML輸出

我已經着手在控制器上使用HttpModule,ActionFilter,OnResultExecuted方法,並在Application_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似乎沒有相同的「頁面生命週期」網絡表格(我只是overring Render,它工作正常),這使得sens。

所以我的問題是如何獲得作爲MVC中的字符串的HTML?有沒有人試圖操縱html輸出?

回答

0

爲什麼不使用JavaScript?只要確定什麼是用戶瀏覽器,並刪除你想要的HTML。 JQuery有很好的方法來做到這一點。

+0

你絕對是雲,但不幸的是,這將需要JavaScript和我正在建設的應用程序應該沒有它。 – fredrik 2011-01-26 12:31:38

0

要遵循MVC模式的概念,我會根據瀏覽器是否支持HTML 5而不是試圖緩存輸出來使用不同的View實現。另一種方法是通過第三方庫使用控件,當瀏覽器不支持所有最新功能時(或者庫可以獨立實現控件),它們可以優雅地分解。與ASP.NET MVC一起提供的JQuery是許多可用的控件的理想選擇,涵蓋大多數HTML5標記。

3

HTML5是向後兼容的,所以感覺不止是任何瀏覽器都可以使用此默認輸出。過時的瀏覽器(如IE6)仍然可以正確渲染,甚至不顯眼的驗證也能正常工作。所以我的建議是保持原樣輸出。

+0

不幸的是,IE無法識別的標籤將被關閉並被忽略。使用JavaScript,您可以創建標籤,以便它們仍可用作容器元素。我不想包裝所有html5標籤以保持佈局。 – fredrik 2011-01-26 12:30:00

+0

@fredrik,當然,如果你使用HTML5特定的標籤,如'',它們將被IE6忽略,但在ASP.NET MVC 3中,HTML5特有的所有特性都是應用於標準標籤的`data- *`屬性如IE6完全適應的''。 – 2011-01-26 12:50:20