禁用自动用户输入消毒



我正在设置一个新的ASP.NET服务器,并希望放入来自我自己的过滤方法结果的HTML,因为我已经在使用自己的过滤方法。但是使用@会使用ASP.NET的消毒方法自动对代码进行消毒,我不想要此。

我尝试使用@符号在我的剃须刀页面中使用C#,但是它一直使用ASP.NET的消毒方法。

public string GetFormattedName(string name)
{
    // Sanitize user input
    return name.Replace("<","&gt;"); // And do my own fancy sanitization.
}
<h3>@Model.GetFormattedName("<strong class="bold-tag">etc</strong>")</h3>

渲染的HTML看起来像:

<strong class="bold-tag">etc</strong>

,但应该是

etc

(作为渲染的html(

我也有一个特殊的颜色代码语法,如下所示: [color:ff0000][/color]

我希望它仍然可以工作,不是使用ASP.NET的消毒方法

只需使用html.raw

例如:

<h3>@Html.Raw(@"<strong class=""bold-tag"">etc</strong>")</h3>

应呈现为:

<h3><strong class="bold-tag">etc</strong></h3>

尝试铸造到ihtmstring。

渲染为:

<h3>@Html.Raw(Model.GetFormattedName("<strong class="bold-tag">etc</strong>"))</h3>

相关内容

  • 没有找到相关文章

最新更新