变量在当前上下文中不存在

时间:2014-05-08 00:37:03

标签: c# while-loop

我正在尝试运行一个while循环,它一直在列表中,直到条目为空。我的代码看起来像这样:

int i = 0;

while(list[i] != null)
{

    <dl class="dl-horizontal">
        <dt>
            list[i].Name
        </dt>

        <dd>
            list[i].Damage
        </dd>
    </dl>
    i++;
}

我得到的错误是在while循环的上下文中不存在i。我无法在循环内部定义它,因为它会在每次传递时重置为0但我不知道还能做什么。

2 个答案:

答案 0 :(得分:2)

尝试在页面顶部的代码块中声明您的变量:

@{
    int i = 0;
}

然后:

@while(list[i] != null)
{

    <dl class="dl-horizontal">
        <dt>
            @list[i].Name
        </dt>

        <dd>
            @list[i].Damage
        </dd>
    </dl>
    i++;
}

答案 1 :(得分:0)

当您在Razor文件中插入HTML元素时,它会退出C#模式,因此您需要在变量调用中添加@符号。

编辑:你还需要@上的while标志和声明声明:

@{ int i = 0; }

@while(list[i] != null)
{
  <dl class="dl-horizontal">
      <dt>
          @list[i].Name 
      </dt>

      <dd>
          @list[i].Damage
      </dd>
  </dl>
  i++;
}

这将使您回到C#上下文并评估表达式。