W widokach dostępny jest helper dostępny jako @Json.Serialize
. Który wykorzystuje Json.NET, biorąc pod uwagę wszelkie opcje formatowania skonfigurowane w Startup.cs:
var foo = @Json.Serialize(model);
Miej na uwadze to nie XSS-sanitizes JSON domyślnie! Jednakże można użyć przeciążenie, które pozwala zrobić, że określenie opcji Json.NET StringEscapeHandling
jak EscapeHtml
:
@using Newtonsoft.Json
...
var foo = @Json.Serialize(model, new JsonSerializerSettings { StringEscapeHandling = StringEscapeHandling.EscapeHtml });
Można owinąć że może do własnego pomocnika jak @Json.SafeSerialize
lub @SafeJson.Serialize
.
Nie znalazłem lepszy sposób niż własnych pomocników bez wymuszania domyślnego JsonOutputFormatter zachowywać się w ten sposób przez opcje json przy starcie:
services.AddMvc().AddJsonOptions(opts => opts.SerializerSettings.StringEscapeHandling = StringEscapeHandling.EscapeHtml)
Problem z tym drugim podejściu (i dlaczego to polubisz preferowany niestandardowy helper) jest to, że wpłynie to również na JSON-y zwrócone przez API.
PS. Podniosłem to na github.