Вы можете написать помощника, который использовал бы JavascriptSerializer
:
public static IHtmlString ToJson<TModel>(this HtmlHelper<TModel> html, object data)
{
var serializer = new JavaScriptSerializer();
return new HtmlString(serializer.Serialize(data));
}
И назвать его так:
@Html.ToJson(myData)
Я также написал помощника для этого (вы могли бы простоукрадите код или используйте пакет Nuget):
https://github.com/paultyng/FluentJson.NET
Вы можете создать JSON в виде Razor следующим образом (обратите внимание на методы расширения Knockout):
@JsonObject.Create()
.AddProperty("name", "value")
.AddProperty("childObject", c => {
.AddProperty("childProperty", "value2")
})
Это приведет к созданию JSON, аналогичному следующему:
{"name":"value","childObject":{"childProperty":"value2"}}
Он использует сериализатор JSON.NET, а не встроенный, вы можете легко адаптировать его код для собственных нужд и встроенный, если выне хотел дополнительной зависимости.