【问题标题】:How can a razor for loop be used in a javascript script tag?如何在 javascript 脚本标签中使用 razor for 循环?
【发布时间】:2012-07-03 09:36:08
【问题描述】:

生成的错误是“条件编译已关闭”。

来自 MSDN 的条件编译 hack 很普遍,但失败了。

有几个这样的问题: Conditional Compilation is turned off in Razor?

他们都指向了答案:

/*@cc_on @*/

来自 MSDN 上的文章:

http://msdn.microsoft.com/en-us/library/5y5529x3(v=vs.90).aspx

但是,这个 hack 非常失败,或者我似乎无法实施它。结尾的 @* 导致 .cshtml 文件中的剩余代码被注释掉。此外,@cc_on 给出错误“cc_on 在当前上下文中不存在”。

这是一段在 .cshtml 文件中测试的代码:

<script type="text/javascript">
 @for(int i = 0; i < 5; i++)
 {
    document.write(@i);
 }
</script>

这将导致“条件编译已关闭”消息。尝试在其中插入解决方法将导致来自 for 循环的各种其他消息,例如“cc_on”在上下文中不存在”、“预期”或“预期;”或“预期)”。

如何在 javascript 脚本标签中使用 razor for 循环?

【问题讨论】:

  • 这看起来像是stackoverflow.com/questions/4599169/…的副本
  • @HatSoft - 大多数情况下是这样,尽管他们没有提到这个问题的目的的条件编译警告。在这里使用@:&lt;text&gt; 可以从razor 生成javascript,但“条件编译”的警告仍然存在。

标签: c# javascript asp.net-mvc-3 razor


【解决方案1】:

试着用&lt;text&gt;&lt;/text&gt;包围你的js

<script type="text/javascript">
 @for(int i = 0; i < 5; i++)
 {
    <text>var that = this;</text>
 }
</script>

【讨论】:

  • @:document.write(@i) 更简洁,IMO。换句话说,使用@: 而不是&lt;text&gt; 标签。
  • 真的吗?我不知道@:
  • 它仅用于 过于冗长的单行语句。它在功能上是等效的。
  • @KyleTrauberman - 虽然这确实编译,但警告仍然存在。
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
相关资源
最近更新 更多