Как правильно кодировать JavaScript в следующем контексте:
<html>
...
<script type="text/javascript">
var settings = @Html.PleaseEncode(settings.ToJson());
// ...
</script>
</html>
Значения в моих объектах JSON устанавливаются администратором приложения, поэтому я предполагаю, что они должны быть правильно закодированы - как для HTML, так и для JavaScript.
Я использую System.Web.Script.Serialization.JavaScriptSerializer для выполнения кодировка JSON. Похоже, что JavaScriptSerializer выполняет некоторое кодирование, когда выводит текст <None>
как \u003cNone\u003c
, но я не уверен, насколько это безопасно. Прямо сейчас я использую @Html.Raw
, так как он работает при безопасном вводе. Он генерирует следующее:
var settings = {"UnselectedReason":"None Selected", /*...*/};
Если я использую @Html.Encode
, я получаю:
var settings = {&quot;UnselectedReason&quot;:&quot;None Selected&quot;, /*...*/};
Я пробовал с AntiXSS и без него, но в любом случае не вижу разницы.