以下声明的等效Razor语法?

时间:2011-08-29 14:51:11

标签: asp.net-mvc-3 razor

假设我有以下ASP.NET Web Form引擎代码,如何在Razor引擎中表达它?

<script type="text/javascript">
    var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>;
</script>

由于 哈迪

1 个答案:

答案 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,但会丢弃输出。