tel*_*all 59 javascript asp.net-mvc razor
使用Visual Studio 2012,在Razor视图页面的JavaScript部分中,我得到的是我认为Razor语法与JavaScript语法之间的争斗.特别是,脚本部分中的尾随分号由intellisense标记,并传递编译器警告(而不是错误):
'警告13语法错误'.
如果我删除它,那么我得到一个语句终止建议(在这种情况下是ReSharper,但只是一个好习惯).
<script type="text/javascript">
$().ready(function(){
var customer = @Html.Raw(ViewBag.CustomerJSON); // <- Razor (I think) doesn't like this semicolon
});
</script>
Run Code Online (Sandbox Code Playgroud)
这是Razor的一个错误吗?如果是这样,有没有办法可以重写这个以避免这个问题?
Dar*_*rov 66
这是Razor的一个错误吗?
绝对不.运行您的应用程序,它将按预期工作.
这是您正在使用的工具(Visual Studio 2012,ReSharper,...)中的一个错误,它无法识别完全有效的语法并警告您不应该警告的内容.您可以尝试在Microsoft Connect站点上打开一个问题,并发出此错误信号(如果尚未完成).
Mir*_*rko 23
由于这似乎仍然在发生,这是一件令人讨厌的事情,我想我至少会让其他人知道我最终用作"黑客".我不想忽略这个警告而宁愿接受一个更具有讽刺意味的语法(是的,有人会说这会杀死性能:))
我用作解决方法的是在最后使用客户端添加.对我来说,这个错误发生在定义一个"整数"常量,所以
window.foo = @(Model.Something);
Run Code Online (Sandbox Code Playgroud)
给了我一个很好的旧分号错误.我只是将其改为:
window.foo = @Model.Something + 0;
Run Code Online (Sandbox Code Playgroud)
(在陈述的问题情况下,您应该只能添加'',所以+''.
我知道在客户端上发生了另外一个额外的添加并且它不优雅,但它确实避免了错误.所以使用它或不使用它,但我更喜欢看到警告/错误.
如果有人知道服务器端的语法解决方法,我更喜欢这个到客户端,所以请添加.
小智 7
我发现在JavaScript身份函数中包含Razor语法也使IDE感到高兴.
<script type="text/javascript">
@* I stands for Identity *@
function I(obj) { return obj; }
$().ready(function(){
var customer = I(@Html.Raw(ViewBag.CustomerJSON));
});
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12727 次 |
| 最近记录: |