2012-02-23 55 views
-1

我最好的猜測是重寫System.Web.WebPages.WebPageBase寫metod,所以它返回WriteLiteral,但是我不能使用@model keywor至極我必須使用...在網站上我做從XSS攻擊沒有風險,我有幾千個變量,我需要顯示在我看來包含HTML,所以我不想寫@ Html.Raw爲我寫的每個變量... 而且它是不是壞的設計:))強制剃刀,總是輸出HTML

編輯:我知道了自己 沒關係,我是壓倒一切的錯誤的方法......

namespace a 
{ 
    public abstract class View<TModel> : System.Web.Mvc.WebViewPage<TModel> 
    { 
     public override void Write(Object value) 
     { 
      base.WriteLiteral(value); 
     } 
    } 
} 

,並確保修改你的web.config INSIDE像這樣的查看文件夾

<system.web.webPages.razor> 
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
<pages pageBaseType="a.View"> 
+1

這種問答是沒有意義的。請從*完整*描述您的問題開始。 – Richard 2012-02-23 09:44:00

+0

對不起英語......事情是當你把你的看法@Variable它會輸出HTML編碼的變量,我想HTML ...現在@ Html.Raw(變量)會做這項工作,但我不'我想要寫每個變量,我想輸出Html.Raw ... – user1227857 2012-02-23 09:58:49

回答

1

這應該可以做到。使用Views/web.configsystem.web.webPages.razor/pages[pageBaseType]來安裝它。

public abstract class UnsafeWebViewPage<TModel> : WebViewPage<TModel> 
{ 
    public override void Write(object value) 
    { 
     base.WriteLiteral(value); 
    } 
} 

編輯:該死的,太晚了:)

+0

感謝無論如何,雖然有點晚... – user1227857 2012-02-23 12:47:19

+0

通過VS 2011更新到MVC 4後,此解決方案拋出System.InvalidOperationException:堆棧爲空。 – 2012-03-30 20:32:00