Estoy tratando de escribir un objeto como JSON en mi Asp.Net MVC View usando Razor, así:
<script type="text/javascript">
var potentialAttendees = @Json.Encode(Model.PotentialAttendees);
</script>
El problema es que en la salida el JSON está codificado y a mi navegador no le gusta. Por ejemplo:
<script type="text/javascript">
var potentialAttendees = [{"Name":"Samuel Jack"},];
</script>
¿Cómo consigo que Razor emita JSON sin codificar?
asp.net-mvc
json
razor
Samuel Jack
fuente
fuente

javascriptserializerpara eso@Html.Raw(javascriptSerializerObjecct.Serialize(myObject))Newtonsoft
JsonConvert.SerializeObjectno se comporta igualJson.Encodey hacer lo que sugiere @ david-k-egghead te abre a ataques XSS .Coloque este código en una vista de Razor para ver que el uso
Json.Encodees seguro y que Newtonsoft se puede hacer seguro en el contexto de JavaScript, pero no sin algún trabajo adicional.Ver también:
fuente
Json.Encodeha existido desde que tengo memoria, pero la desventaja es que usa la implementación de Microsoft que genera fechas no estándar (y puede hacer otras cosas molestas). Uso y aliento el uso de NewtonsoftJsonConvert.SerializeObjectcombinado con un escape adecuado porque tiene una mejor salida.Usando Newtonsoft
fuente
JsonSerializerSettings.StringEscapeHandlingpara habilitar la codificación. stackoverflow.com/a/50336590/6950124