razor页面中的Javascript语法错误

razor页面中的Javascript语法错误,javascript,serialization,razor,asp.net-mvc-4,Javascript,Serialization,Razor,Asp.net Mvc 4,我找到了一个解决方案,可以将一些数据从模型传输到javascript对象。问题是,我在VisualStudio中有一个错误,表明分号无效,但当我尝试运行我的应用程序时,它工作正常 以下是显示错误的屏幕截图: 但是如果我删除分号,我现在有一个错误: 无论如何,javascript语句应该在行尾始终有一个分号 如果在运行应用程序时,一切正常,那么此错误意味着什么?您可以尝试将其包含在块中: var serializedData = @{ Html.Raw(NewtonSoft.Json

我找到了一个解决方案,可以将一些数据从模型传输到javascript对象。问题是,我在VisualStudio中有一个错误,表明分号无效,但当我尝试运行我的应用程序时,它工作正常

以下是显示错误的屏幕截图:

但是如果我删除分号,我现在有一个错误:

无论如何,javascript语句应该在行尾始终有一个分号


如果在运行应用程序时,一切正常,那么此错误意味着什么?

您可以尝试将其包含在块中:

var serializedData = @{ 
    Html.Raw(NewtonSoft.Json.JsonConvert.SerializeObject(Model));
};

编辑:此答案仅适用于VS 2010。VS 2012的升级也打破了这种解决方法。

我刚开始使用Razor/MVC4,但你能这样做吗

@{
    var serializedData = Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model));
}
<script>
    ...
    var serializedData = @serializedData;
@{
var serializedData=Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model));
}
...
var serializedData=@serializedData;

将razor代码用引号括起来,如下所示:

var myVar = '@serializedData';

作为JavaScript duck类型,您在大多数用例中都应该可以。

谢谢您,但错误似乎被转移到@serializedData变量的分号。如果您将JSON放在这些字符串中,则可能会重复,您将需要使用
JSON.parse(…)
,以便将其反序列化为JavaScript对象。自由地这样做可能会降低页面的执行速度。更好的解决方案是使用标识函数。这就是说,这是本页介绍的唯一可行的解决方案。为了更好地解决问题,请看重复的问题。@crush:实际上深入研究,我们都是正确的,我们都是错误的。重复链接中删除的答案之一指向解释原因的问题()。当我回答这个问题时,我正在Studio 2010上(自2012年以来的大多数人都是在几个月前才出来的),很显然,2012年(以及随后的2013年)的升级在JavaScript解析器中发生了变化,打破了这一点。我将对此进行更新以反映这种细微差别,但它确实解释了为什么它在当时有效,而不是现在。根据您的编辑删除了我的评论。感谢您维护本网站的有效性。