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

Posted

技术标签:

【中文标题】如何在 javascript 脚本标签中使用 razor for 循环?【英文标题】:How can a razor for loop be used in a javascript script tag? 【发布时间】: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”在上下文中不存在”、“预期”或“预期;”或“预期)”。

【问题讨论】:

这看起来像是***.com/questions/4599169/…的副本 @HatSoft - 大多数情况下是这样,尽管他们没有提到这个问题的目的的条件编译警告。在这里使用@:&lt;text&gt; 可以从razor 生成javascript,但“条件编译”的警告仍然存在。 【参考方案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 - 虽然这确实编译,但警告仍然存在。

以上是关于如何在 javascript 脚本标签中使用 razor for 循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何缓存使用脚本标签下载的已下载 javascript 文件

如何提前退出javascript脚本标签?

如何在标签中显示 javascript 脚本中的变量的值

如何将脚本标签插入头部标签的顶部/开头?

HTML/Javascript:如何访问在带有 src 集的脚本标签中加载的 JSON 数据

我可以在javascript类型的脚本标签中使用所有HTML标签吗?