我正在开发一个系统,用户可以将 HTML 提交到系统,然后“预览”生成的页面。用户提交的 HTML 通过调用视图中的 HTML.Raw 提供给页面,在视图中它显示为包含其他数据的表格的一部分。在一个幼稚的实现中,它的显示如下:
...
<td>
<div>@Html.Raw(UserEnteredHTMLIsFetchedHere)</div>
</td>
...
我遇到的问题是用户输入的 HTML 不能保证没有错误(实际上远非如此)。如果用户在 HTML 中输入一个未闭合的 div 标记然后去预览它,则 Html.Raw 返回的未闭合标记将在 Html.Raw 调用之外的 /div 上闭合,并在整个页面上创建不正确的嵌套。
我正在寻找一种方法来隔离 Html.Raw 的输出,以便未关闭的标签不会干扰页面的其余部分。
我尝试使用 iframe 标记来完成此操作(将 src 设置为编码的 HTML),但它与 CSS 并没有很好的配合。如果可能的话,我希望将页面的现有 CSS 保留在隔离的 HTML 中。
我不确定这是否是 Html.Raw 甚至应该使用的一种方式,但这是我正在修改而不是创建的实现,我想尽可能多地保留原始实现。