Asp.net mvc 3 强制razor,以便始终输出html
我的最佳猜测是重写System.Web.WebPages.WebPageBase Write metod,使其返回WriteEleral,但我不能使用@model keywor,我必须使用它。。。在我做的网站上,XSS攻击根本没有风险,我需要在视图中显示几千个包含html的变量,所以我不想为我写的每个变量都写@html.Raw。。。 这与糟糕的设计无关:)) 编辑:我自己买的 没关系,我覆盖了错误的方法Asp.net mvc 3 强制razor,以便始终输出html,asp.net-mvc-3,razor,overriding,Asp.net Mvc 3,Razor,Overriding,我的最佳猜测是重写System.Web.WebPages.WebPageBase Write metod,使其返回WriteEleral,但我不能使用@model keywor,我必须使用它。。。在我做的网站上,XSS攻击根本没有风险,我需要在视图中显示几千个包含html的变量,所以我不想为我写的每个变量都写@html.Raw。。。 这与糟糕的设计无关:)) 编辑:我自己买的 没关系,我覆盖了错误的方法 namespace a { public abstract class View&l
namespace a
{
public abstract class View<TModel> : System.Web.Mvc.WebViewPage<TModel>
{
public override void Write(Object value)
{
base.WriteLiteral(value);
}
}
}
名称空间a
{
公共抽象类视图:System.Web.Mvc.WebViewPage
{
公共重写无效写入(对象值)
{
base.WriteLiteral(值);
}
}
}
并确保在视图文件夹中修改web.config,如下所示
<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">
这应该可以做到。使用
Views/web.config
system.web.webPages.razor/pages[pageBaseType]
将其升级
public abstract class UnsafeWebViewPage<TModel> : WebViewPage<TModel>
{
public override void Write(object value)
{
base.WriteLiteral(value);
}
}
公共抽象类UnsafeWebViewPage:WebViewPage
{
公共重写无效写入(对象值)
{
base.WriteLiteral(值);
}
}
编辑:该死,太晚了:)这个问题没有意义。请从你的问题的完整描述开始。很抱歉英语不好。。。问题是当你把@Variable放在视图中时,它会输出html编码的变量,我想要html。。。现在@Html.Raw(Variable)将完成这项工作,但我不想在我想要输出的每个变量上都写入Html.Raw…在通过VS2011更新到MVC 4后,此解决方案抛出System.InvalidOperationException:Stack empty。