在ASP.NET MVC3 Razor @ Html.Raw(Json.Encode不计算

时间:2011-12-30 18:42:36

标签: asp.net asp.net-mvc-3 razor

我刚刚将ASP.NET MVC应用程序升级到3.0版和Razor。

我的主页上有以下代码:

   <script type="text/javascript">
        /*@cc_on@*/
        var LastUserSetting = @Html.Raw(Json.Encode(ViewData["LastUserSetting"] == "" ? "''" : ViewData["LastUserSetting"]));
    </script>

在浏览器中,最终显示为:

var LastUserSetting = @Html.Raw(Json.Encode(ViewData["LastUserSetting"] == "" ? "''" : ViewData["LastUserSetting"]));

出现以下错误消息:“引用未定义的XML名称@Html”

这显然不是我想要的。

我错过了什么?我做错了什么?

非常感谢!

2 个答案:

答案 0 :(得分:5)

您正在WebForms母版页中使用Razor代码。这不起作用。 Razor语法仅适用于Razor视图(cshtml或vbhtml)

因此,您需要切换回使用该主服务器中的WebForms语法,或切换到使用实际的Razor视图。

答案 1 :(得分:1)

尝试将剃刀代码放在单引号中:

 <script type="text/javascript">
    /*@cc_on@*/
    var LastUserSetting = '@Html.Raw(Json.Encode(ViewData["LastUserSetting"] == "" ? "''" : ViewData["LastUserSetting"]))';
</script>