Я бы использовал следующее:
<script type="text/javascript">
var initialData = @Html.Raw(new JavaScriptSerializer().Serialize(Model));
</script>
Это точно так же, как ваш пример (обратите внимание на Html.Raw
).
Если вы хотите закодировать вывод (html) иливаш код возвращает IHtmlString:
<script type="text/javascript">
var initialData = @(new JavaScriptSerializer().Serialize(Model));
</script>
Вы хотите использовать синтаксис @( ... )
, потому что использование @new JavaScriptSerializer(..)
позволит синтаксическому анализатору Razor остановиться на первом пробеле (после нового).
Синтаксис, подобный этому:
<script type="text/javascript">
var initialData = @{ new JavaScriptSerializer().Serialize(Model); }; @* <== wrong *@
</script>
не работает, потому что он вызовет new JavaScriptSerializer
, но отбрасывает вывод.