我正在使用 RazorEngine 从网页上的 html 片段中解析模板。(这是一个遗留系统,无法切换到 Mvc Razor 视图,因此我们将小部分切换为在有意义的情况下使用 RazorEngine)。SO和互联网上有很多问题试图让Mvc的Html和Url助手与Razor引擎一起工作。为了使@Html
语法正常工作,我修改了此处找到的一些代码,以将 Html 添加到基本模板中:
public HtmlHelper<t> Html
{
get
{
if (helper == null)
{
var writer = this.CurrentWriter; //TemplateBase.CurrentWriter
var vcontext = new ViewContext() { Writer = writer, ViewData = this.ViewData};
helper = new HtmlHelper<t>(vcontext, this);
}
return helper;
}
}
public ViewDataDictionary ViewData
{
get
{
if (viewdata == null)
{
viewdata = new ViewDataDictionary();
viewdata.TemplateInfo = new TemplateInfo() { HtmlFieldPrefix = string.Empty };
if (this.Model != null)
{
viewdata.Model = Model;
}
}
return viewdata;
}
set
{
viewdata = value;
}
}
在对 Html 源代码进行大量调试后,我想我已经设法实例化 Html 帮助程序所需的所有内容,并且它成功运行@Html.Label
......问题是生成的 html 是:
<label for="MyNumber">MyNumber</label>
当它显然应该是:
<label for="MyNumber">MyNumber</label>
我很困惑如何解决这个问题。查看 RazorEngine 源时,我无法找到编码是如何发生的。我最初的想法是 TextWriter 必须对值进行编码,但我无法确认这一点。我怎样才能@Html.BlahFor()
呈现未转义的 html?