我从网上提取数据列表并将我的数组放入我的下拉菜单中。我正在使用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;
}
现在我知道使用&#39; @&#39;符号允许您通过C#在我的javascript中访问我的模型中的类。所以我的猜测是Javascript变量&#39; i&#39;除非我给它一些指示,否则无法访问。
如何访问我的int count&#39; i&#39;在上下文中?
编辑:
我回答了自己的问题。
答案 0 :(得分:1)
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);
}
答案 1 :(得分:0)
无法判断您的代码是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;
}
答案 2 :(得分:0)
因为您使用的是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编辑器。