你如何处理HTML编码MVC视图中的换行符?

Kal*_*exx 4 asp.net-mvc html-encode

我不确定处理这个的最佳方法.在我的索引视图中,我显示了一个包含在其中的消息TempData["message"].这允许我在来自另一个操作时向用户显示某些错误或信息性消息(例如,如果用户在没有访问权限时尝试输入编辑操作,则会将其踢回索引,并显示消息"您无权编辑此数据").

在显示消息之前,我跑了Html.Encode(TempData["message"]).但是,我最近遇到的问题是,我希望能够通过换行符(<br>)分隔出更长的消息.不幸的是(显然),<br>得到的编码Html.Encode因此不会导致实际的换行符.

如何在Html编码字符串中正确处理换行符?

ICo*_*fee 6

我见过的最简单的解决方案是:

@MvcHtmlString.Create(Html.Encode(TempData["message"]).Replace(Environment.NewLine, "<br />"))
Run Code Online (Sandbox Code Playgroud)

如果您使用剃刀视图,则不必正常调用Html.Encode.默认情况下,Razor html会对所有输出进行编码. 来自Scott Gu的博客介绍Razor:

默认情况下,使用@ block发出的内容会自动进行HTML编码,以更好地防范XSS攻击情形.