Как правильно кодировать 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 , но я не вижу разницы в любом случае.