我正在尝试使用Razor将对象作为JSON编写到我的Asp.Net MVC View中,如下所示:
问题是在输出中JSON被编码,我的浏览器不喜欢它.例如:
如何让Razor发出未编码的JSON?
你做:
@Html.Raw(Json.Encode(Model.PotentialAttendees))
在早于Beta 2的版本中,您可以这样做:
@(new HtmlString(Json.Encode(Model.PotentialAttendees)))
Newtonsoft的JsonConvert.SerializeObject
表现与Json.Encode
@ david-k-egghead建议的行为不同,并且可以让你接受XSS攻击.
将此代码放入Razor视图中以查看使用Json.Encode
是否安全,并且可以在JavaScript上下文中使Newtonsoft安全,但不是没有额外的工作.
" } } )); alert('jsonEncodePotentialAttendees passed XSS test: ' + jsonEncodePotentialAttendees[0].Name); " } }), addDoubleQuotes: true))); alert('safeNewtonsoftPotentialAttendees passed XSS test: ' + safeNewtonsoftPotentialAttendees[0].Name); " } })); alert('unsafeNewtonsoftPotentialAttendees passed XSS test: ' + unsafeNewtonsoftPotentialAttendees[0].Name);
也可以看看:
是否需要在Razor视图中编码JsonConvert.SerializeObject的输出?
XSS预防规则
使用Newtonsoft