我听说使用HTML。不建议在 Razor 视图中使用 Raw,如果是这样,我有问题。
我正在使用实体框架与我的 SQL 数据库进行交互。我也使用SummerNote作为前端的编辑器。
现在我的视图代码在@{ }块中,我相信它会进行一些编码/解码。
场景是用户在 SummerNote 编辑器中输入一些文本并应用一些格式(例如将单词加粗(并单击保存。这将生成一个 HTML 字符串并将其传递给我的控制器:
<p>Test <b>string </b>with formatting.</p>
在控制器中,我使用 HTML 编码来编码:
customerData.Description = HttpUtility.HtmlEncode(summerNoteFieldData);
然后将其发送到数据库。它在数据库中如下所示:
<p>Test <b>string </b>with formatting.</p>
然后在呈现它时,我确实:
<div class="summernote">@Html.Raw(@HttpUtility.HtmlDecode(@Model))</div>
因此,如果我删除 Html.Raw,那么我将看到上面的 HTML 字符串而不是格式化的字符串。
这是安全和正确的方法吗?可以改进吗?
感谢您的任何帮助。
您应该在视图中打印时进行 HTML 编码(使用@Model
(。
不要在其他任何地方进行编码或解码;不要将编码的内容存储在数据库中。