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 ' ?
编辑:我回答了我自己的问题。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编辑器。