c#剃刀错误:名称'i'在当前上下文中不存在

本文关键字:上下文 不存在 名称 错误 剃刀 | 更新日期: 2023-09-27 18:01:51

我正在从网络上拉数据列表,并将我的数组放入我的下拉菜单。我正在使用razor脚本,并在第4行得到以下错误:

The name 'i' does not exist in this current context
下面是我的代码:
var select = document.getElementById('propertyMenu');
            for (var i = 0; i < @Model.propertiesArray.Length; i++)
            {
                var property = "@Model.propertiesArray[i]"
                var element = document.createElement('option');
                element.textContent = property;
                element.value = property;
            }

现在我知道使用'@'符号可以让你通过c#从我的javascript模型中访问类。所以我的猜测是,Javascript变量'i'将无法访问,除非我给它某种指令。

如何在上下文中访问int count ' I ' ?

编辑:

我回答了我自己的问题。

c#剃刀错误:名称'i'在当前上下文中不存在

var propertiesArray = new Array();
@foreach (var props in Model.propertiesArray)
{
    @:propertiesArray.push("@props");
}
var select = document.getElementById("propertyMenu");
for (var i = 0; i < propertiesArray.length; i++)
   {
       var property = propertiesArray[i]; 
       var element = document.createElement('option');
       element.textContent = property;
       element.value = property;
       select.appendChild(element);
   }

无法判断你的代码是c#还是JS。

你可能不得不这样做

var select = document.getElementById('propertyMenu');
        for (var i = 0; i < @Model.propertiesArray.Length; i++)
        {
            var property = @Model.propertiesArray[i].toString();
            var element = document.createElement('option');
            element.textContent = property;
            element.value = property;
        }

因为您使用的是Javascript代码。你可以试试这个

@{
   string values = "";
   for(int i=0;i<Model.propertiesArray.Length;i++)
      values += Model.propertiesArray[i].ToString()+(i!=Model.propertiesArray.Lenght-1)?",":"";
 }
<script>
var value = '@values';
var values = value.split(',');
var select = document.getElementById('propertyMenu');
    for (var i = 0; i < values .length; i++)
    {
        var property = values[i];
        var element = document.createElement('option');
        element.textContent = property;
        element.value = property;
    }
</script>

我写了Stackoverflow编辑器。