这几天我一直在摸不着头脑,我不确定这是我的环境问题还是基于 ASP.NET MVC 的代码本身的问题(尽管我有 5 年的 C# 经验)。我正在使用最近干净安装的 Win7x64 和 VS 2008 以及所有补丁。
我将原始 HTML 存储在一个数据库表中,该数据库表由控制器根据一些我无法控制的规则有选择地加载。不幸的是,当尝试将值填充到控件中的视图数据时,如下所示:
ViewData["HTMLData"] = DAO.HTMLDataGet();
当我看到输出时,它被转义/HTML 编码。我尝试使用以下所有方法似乎都没有解决这个问题:
<%: HttpUtility.HtmlDecode(ViewData["HTMLData"].ToString())%>
和…
<%: Server.HtmlDecode(ViewData["HTMLData"].ToString())%>
和…
<%: Html.Raw(ViewData["HTMLData"].ToString())%>
…它很好地从数据库表中获取原始 HTML,但是无论我尝试什么,它都会一直强制执行该爆炸编码。从我在 MSDN 上读到的内容来看,有一个脚注是关于 HTML 未正确解码而导致的问题,其中包含空格(我的是这样)。因为我怀疑我是唯一遇到过这个问题的人,所以我向你们寻求一些想法。
我正准备用我的方式在视图中使用正则表达式来清理页面,但我认为在我强行使用它之前先从其他人那里获得一些建议会更好。提前致谢。
原文由 Dave 发布,翻译遵循 CC BY-SA 4.0 许可协议
<%:
_表示_“必要时编码”。如果你不想那样,那么 懒惰 的方法是使用<%=
,但坦率地说,我建议你改为将它包装在IHtmlString
中,例如:现在,如果您 存储 并显示它,它应该“按原样”使用 html。