假设我有以下ASP.NET Web Form引擎代码,如何在Razor引擎中表达它?
<script type="text/javascript">
var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>;
</script>
由于 哈迪
答案 0 :(得分:5)
我会使用以下内容:
<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
,但会丢弃输出。