HTML如何编码/解码&HTML?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (381)

我听说在Razor视图中使用HTML.Raw是不建议的,如果是的话,我有一个问题。

我使用实体框架与我的SQL DB进行交互。另外,我正在使用SummerNote作为前端的编辑器。

现在,我的视图代码在@{}块中,我认为它做了一些编码/解码。

场景是用户在SummerNote编辑器中输入一些文本,并应用一些格式(例如,使单词粗体)并单击“保存”。这将生成一个HTML字符串并将其传递给我的控制器:

<p>Test <b>string </b>with formatting.</p>

在控制器中,我使用HTML编码来编码:

customerData.Description = HttpUtility.HtmlEncode(summerNoteFieldData);

然后寄给DB。在DB中如下所示:

&lt;p&gt;Test &lt;b&gt;string &lt;/b&gt;with formatting.&lt;/p&gt;

在呈现时,我会:

<div class="summernote">@Html.Raw(@HttpUtility.HtmlDecode(@Model))</div>

因此,如果删除Html.Raw,那么我将看到上面的HTML字符串,而不是格式化的字符串。

这是安全而正确的方法吗?可以改进吗?

谢谢你的帮助。

提问于
用户回答回答于

在视图中打印时,应该对HTML进行编码(使用@Model)

不要在任何其他地方进行编码或解码;不要将编码的内容存储在数据库中。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励