ASP.NET Core MVC:如何取消HTML标签自动编码实现正常解析?
解决HTML标签被浏览器编码为纯文本的问题
你的问题核心是前端渲染时自动转义了HTML内容,导致标签被当成普通文本显示。以下是不同技术栈的解决方案:
原生JavaScript
如果用原生JS渲染内容,避免使用innerText或textContent(这两个会把HTML转义为纯文本),改用innerHTML直接插入HTML:
// 错误写法:会转义HTML document.getElementById('content').innerText = yourSqliteData; // 正确写法:让浏览器解析HTML标签 document.getElementById('content').innerHTML = yourSqliteData;
Vue.js
Vue默认的双大括号{{ }}会自动转义HTML,需要使用v-html指令:
<!-- 错误写法:标签被转义 --> <div>{{ yourContent }}</div> <!-- 正确写法:渲染HTML --> <div v-html="yourContent"></div>
React.js
React的JSX会自动转义内容,需使用dangerouslySetInnerHTML属性(注意名称里的"dangerously"提示了安全风险):
// 错误写法:标签被转义 <div>{yourContent}</div> // 正确写法:渲染HTML <div dangerouslySetInnerHTML={{ __html: yourContent }}></div>
Angular
Angular默认插值会转义HTML,使用[innerHTML]绑定属性:
<!-- 错误写法:标签被转义 --> <div>{{ yourContent }}</div> <!-- 正确写法:渲染HTML --> <div [innerHTML]="yourContent"></div>
重要安全提醒
如果你的HTML内容来自不可信的用户输入(比如用户提交的评论),直接渲染未过滤的HTML会导致XSS攻击。建议使用DOMPurify这类库先净化内容,再进行渲染:
// 原生JS示例:先净化再渲染 import DOMPurify from 'dompurify'; const cleanContent = DOMPurify.sanitize(yourSqliteData); document.getElementById('content').innerHTML = cleanContent;
内容的提问来源于stack exchange,提问作者user26426767
相关产品推荐
相关产品推荐

