2011-08-29 24 views
6

假設我有以下ASP.NET Web Form引擎代碼,我該如何在Razor引擎中表達它?以下陳述的等效剃刀語法?

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

感謝 哈迪

回答

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(..)讓在第一空間的剃刀解析器停止(後新)。

這樣的語法:

<script type="text/javascript"> 
    var initialData = @{ new JavaScriptSerializer().Serialize(Model); }; @* <== wrong *@ 
</script> 

不起作用,因爲它會調用new JavaScriptSerializer,但丟棄的輸出。

+0

很好,它的工作原理! – hardywang