Razor / JavaScript和尾随分号

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

使用Visual Studio 2012,在Razor视图页面的JavaScript部分中,我得到了我认为是Razor语法与JavaScript语法之间的争斗。特别是,脚本部分的尾部分号由智能感知标记,并提供编译器警告(不是错误):

'Warning 13 Syntax error'

如果我删除它,那么我会得到一个声明终止建议(在这种情况下,ReSharper,但只是良好的做法)。

<script type="text/javascript">
    $().ready(function(){
        var customer = @Html.Raw(ViewBag.CustomerJSON);  // <- Razor (I think) doesn't like this semicolon
    });
</script>

这是Razor中的一个bug吗?如果是这样,有没有办法我可以重写这个来避免这个问题?

提问于
用户回答回答于

这是Razor中的一个bug吗?

绝对不。运行你的应用程序,它会按预期工作。

这是您正在使用的工具(Visual Studio 2012,ReSharper,...)中的一个错误,它无法识别完全有效的语法,并警告您不应该警告您的某些内容。您可以尝试在Microsoft Connect站点上打开一个问题,并发出此错误信号(如果尚未完成)。

用户回答回答于

由于这似乎仍在发生,而且我认为我至少会让别人知道我最终以“黑客”的身份使用了什么。我不想忽视这个警告,而宁愿接受一个更好的语法(并且是的,有人会说这会杀死性能:))

我使用的解决方法是在最后使用客户端添加。对我来说,这个错误发生在定义一个“整数”常量,所以

window.foo = @(Model.Something);

给了我很好的分号错误。我只是将其更改为:

window.foo = @Model.Something + 0;

(在陈述的问题中,您应该只能添加'',所以+''。

我知道客户端上还有一个额外的增加,它并不优雅,但它确实避免了错误。所以使用它或不要,但我更喜欢这个看到警告/错误。

如果有人知道服务器端的语法解决方法,我宁愿将其用于客户端,因此请添加。

扫码关注云+社区