你如何关闭@:Razor算子

时间:2014-12-12 18:56:46

标签: asp.net-mvc razor

我知道@:运算符允许我从mvc指令中访问javascript变量,但我不知道如何关闭该运算符。

我有以下代码:

var temp = 123
@{ Html.RenderAction("DeliveredShipmentDetailView", "PartialPages", new {orderId = @:temp});}

当我运行此代码时,我收到

的错误消息
  

“代码块缺少结束”}“字符”

我知道这是由@:字符引起的,导致结束字符被视为javascript,但不知道如何解决此问题。由于将操作符包装在括号中将具有与之相同的效果。

2 个答案:

答案 0 :(得分:1)

你弄错了。 @:允许您访问razor c#代码中的JS变量。 事实上,没有任何条件允许,因为它是不可能的。 Razor在呈现html时在服务器上执行,而JS代码在客户端浏览器上执行。因此,无法直接在Razor语法中访问JS变量。

@:实际上是允许您从Razor中的C#代码块中输出纯文本。

示例:

从c#代码块中输出文本的一种方法

@if (foo) {
  <text>Plain Text</text> 
}

或@:

@if (foo) {
  @:Plain Text is @bar
}
同样的事情......

点击here以获取快速参考

答案 1 :(得分:0)

您不需要@:因为您已经 在该帮助声明中的代码部分。

更新:如果temp是C#变量而不是Javascript变量,则上述情况属实。当然,你不能(原则上)在Razor中使用Javascript变量。