'x'是'变量'但是像'方法'一样使用

时间:2015-03-21 03:58:52

标签: asp.net-mvc razor

我正在为一个奇怪的情况而苦苦挣扎。我有一组页面,我的意思是在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'是'变量'但是被使用   像'方法'

并指出使用@page。事实上,VS13也使用了变量,但仅在第一种情况下使用了

这里发生了什么?

2 个答案:

答案 0 :(得分:1)

<script type="text/javascript">
@foreach (string page in pages)
{
    <text>
    function @(page)() {
        // something here
    }
    </text>
}

答案 1 :(得分:1)

公顷!我想到了。它需要一个血腥的空间,或某种表达终结者:

<text>
function @page () {

(注意@page之后的空格,这表示Razor表达式已经结束),或者:

<text>
function @(page)() {

当然,IDE仍然抱怨期望一个标识符(函数名称),但那是因为它并不意味着生成Javascript