.html 和 .append 不对来自 C# 的动态 HTML 进行编码

.html and .append not encoding dynamic html from c#

本文关键字:动态 HTML 编码 append html      更新时间:2023-09-26

我正在使用 C# ASP.NET MVC,并希望用存储在数据库中的 html 填充 DIV。我尝试了以下方法:

//getting a string of HTML from a database
@{
string myHtml = Model.Data.Html;
}
//Using Javascript to insert this into a Div
<script>
$("#myDiv").html("@myHtml");
</script>

div 填充 html,但它作为原始文本插入并显示所有 html 标记。我尝试过 .append 和 .html 无济于事。

任何帮助将不胜感激。

也许你想使用@Html.Raw()方法?

$('#myDiv').html('@Html.Raw(myHtml)');

请注意,因为这可能是 XSS 漏洞的一部分。 不要直接将用户输入呈现为未编码的 HTML。 (这正是 ASP.NET MVC Framework HTML 编码输出默认的原因,这就是您看到的问题。

试试

 $("#myDiv").html('@Html.Raw(Model.Data.Html)')

如果您没有明确要求使用 Javascript 来执行此操作,只需使用 Html.Raw 以内联方式输出未编码的 HTML。

<div id="myDiv">@Html.Raw(myHtml)</div>