'x'是'variable',但像'method'一样使用



我正在与一个奇怪的情况作斗争。我有一组页面,我想在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

最新更新