这些年来有很多答案,在有人对我大喊之前,我已经尝试过所有这些并且无法工作。我使用MVC 5,Razor 3,Visual Studio 2017.这是一个简化的测试:
在我的App_Code文件夹中,我有一个SSLhelpers.cshtml文件,其中包含:
@helper Macro(string Htext, string Ptext)
{
<h2>@Htext</h2>
<p>@Ptext</p>
}
在我看来,我有:
@SSLhelpers.Macro("This is my header", "This is my paragraph text. We should
be <strong>bold</strong> here but we're not.")
生成的html是:
<h2>This is my header</h2>
<p>This is my paragraph text. We should be <strong>bold</strong>
here but we're not.</p>
如何避免编码?
谢谢。
答案 0 :(得分:2)
您可以像这样使用HtmlString
:
@helper Macro(string Htext, string Ptext)
{
<h2>@(new HtmlString(Htext))</h2>
<p>@(new HtmlString(Ptext))</p>
}
答案 1 :(得分:1)
创建自定义助手(在视图中引用的命名空间):
public static HtmlString TestHtmlString(this HtmlHelper html, string hText, string pText)
{
var h = new TagBuilder("h2");
var p = new TagBuilder("p");
h.InnerHtml = hText;
p.InnerHtml = pText;
return new HtmlString(h.ToString(TagRenderMode.Normal) + p.ToString(TagRenderMode.Normal));
}
然后你可以在你的视图中使用它:
@Html.TestHtmlString("This is my header", "This is my paragraph text. We should be <strong> bold </strong> here but we're not.")