Comment puis-je écrire clair Json de mon point de Vue à l'aide de Rasoir?
Je suis en train d'écrire un objet JSON à mon Asp.Net MVC Vue à l'aide d'un Rasoir, comme suit:
<script type="text/javascript">
var potentialAttendees = @Json.Encode(Model.PotentialAttendees);
</script>
Le problème est que dans la sortie le JSON est codé, et mon navigateur ne l'aime pas. Par exemple:
<script type="text/javascript">
var potentialAttendees = [{"Name":"Samuel Jack"},];
</script>
Comment puis-je obtenir Rasoir à émettre de manière non codée JSON?
Vous devez vous connecter pour publier un commentaire.
Vous n':
Dans des versions antérieures à la version Bêta 2, vous avez comme:
javascriptserializer
pour que, comme@Html.Raw(javascriptSerializerObjecct.Serialize(myObject))
Newtonsoft de
JsonConvert.SerializeObject
ne se comportent pas de la même chose queJson.Encode
et de faire ce que @david-k-tête d'oeuf suggère vous ouvre de les attaques XSS.Chute de ce code dans un Rasoir pour voir que l'utilisation de
Json.Encode
est sûr, et que Newtonsoft peut être faite sans danger dans le contexte JavaScript, mais n'est pas sans un certain travail supplémentaire.Voir aussi:
Json.Encode
a été aussi longtemps que je me souvienne, mais l'inconvénient est qu'il utilise Microsoft de la mise en œuvre des sorties non-standard dates (et peut faire d'autres choses désagréables). - Je l'utiliser ou encourager l'utilisation de Newtonsoft deJsonConvert.SerializeObject
combinée avec la bonne échapper car il a une meilleure sortie.À L'Aide De Newtonsoft
JsonSerializerSettings.StringEscapeHandling
pour permettre l'encodage. stackoverflow.com/a/50336590/6950124