我正在与一个奇怪的情况作斗争。我有一组页面,我想在Razor中进行迭代。我需要做两次,一次是在脚本标记中,一次在外部。现在,我知道Razor是用来生成HTML而不是Javascript的,但它运行得很好,现在它正在崩溃,我不知道为什么。这是破解的代码:
<script type="text/javascript">
@foreach (string page in pages)
{
<text>
function @page() {
// something here
}
</text>
}
</script>
这很好:
<div class="intro">
@foreach (string page in pages)
{
<div id="@page">
<!-- whatever -->
</div>
}
</div>
编译器错误消息:CS0118:"page"是"变量",但已使用就像一种"方法"
并指出了CCD_ 1的使用。事实上,VS13也红色歪歪扭扭地使用变量,但仅在第一种情况下!
这是怎么回事?
尝试
<script type="text/javascript">
@foreach (string page in pages)
{
<text>
function @(page)() {
// something here
}
</text>
}
ha!我想明白了。它需要一个血腥的空间,或者某种表达终结者:
<text>
function @page () {
(注意@page后面的空格,这向Razor表示表达式已经结束),或:
<text>
function @(page)() {
当然,IDE仍然抱怨期望一个标识符(函数名),但这是因为它并不意味着生成Javascript