首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Razor/JavaScript和尾随分号

Razor/JavaScript和尾随分号
EN

Stack Overflow用户
提问于 2012-08-24 22:50:11
回答 7查看 13.2K关注 0票数 60

使用Visual Studio2012,在Razor视图页面上的JavaScript部分,我得到了我认为是Razor语法与JavaScript语法之间的一场战斗。特别是,脚本部分中的尾随分号由intellisense标记,并发出编译器警告(而不是错误):

‘警告13语法错误’。

如果我删除它,那么我会得到一个语句终止建议(在本例中是ReSharper,但这只是一个好的实践)。

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

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-08-25 14:53:01

这是剃刀中的一个bug吗?

绝对不是。运行您的应用程序,它将按预期工作。

这是您正在使用的工具中的错误(Visual Visual Studio 2012,ReSharper,...)它们不能识别完全有效的语法并警告您一些不应该被警告的东西。您可以尝试在Microsoft Connect站点上打开一个问题,并发出此错误的信号,如果还没有这样做的话。

票数 67
EN

Stack Overflow用户

发布于 2013-04-02 01:56:53

由于这种情况似乎仍然在发生,而且这是一件令人讨厌的事情,我想我至少会让别人知道我最终使用了什么作为“黑客”。我不想忽略这个警告,而是更愿意接受一个更笨拙的语法(是的,有人会说这会扼杀性能:)

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

代码语言:javascript
复制
window.foo = @(Model.Something);

给了我一个很好的分号错误。我只是简单地将其更改为:

代码语言:javascript
复制
window.foo = @Model.Something + 0;

(在陈述问题的情况下,您应该能够添加'',so + '‘。

我知道在客户机上发生了一个完整的添加,它不是很优雅,但它确实避免了错误。所以使用它或者不使用它,但是我更喜欢它而不是看到警告/错误。

如果有人知道服务器端的语法解决方法,我更喜欢这种方法,而不是客户端的方法,所以请添加。

票数 23
EN

Stack Overflow用户

发布于 2014-11-15 09:23:05

我发现,将Razor语法封装在一个JavaScript标识函数中也能让集成开发环境满意。

代码语言:javascript
复制
<script type="text/javascript">
    @* I stands for Identity *@
    function I(obj) { return obj; }
    $().ready(function(){
        var customer = I(@Html.Raw(ViewBag.CustomerJSON));
    });
</script>
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12111729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档