2012-02-23 83 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