我在asp.net中有一个下拉列表,在视图中使用嵌套for循环,以及我的变量 从控制器传来。显示给用户的值应该是停止的名称,值是该停止的id。名称和停止ID都在我从控制器传递到视图的列表中。但是,当显示下拉列表时,将对整个列表重复第一个停止名称。我知道正在选择正确的停止ID,但名称正在重复。这是我的代码:
<select id="stop" onchange="sendInfo();">
@foreach(var blah in ViewBag.foobar)
{
foreach (var foo in ViewBag.stops)
{
<option value="@foo">@blah</option>
}
}
</select>
foo是正确使用的停止ID,但是blah是停止名称的名称,会重复。我觉得我很亲密但不太相似。我希望这很清楚,解释起来很困惑。
答案 0 :(得分:2)
试试这个:
@{
if(ViewBag.foo != null && ViewBag.blah != null && ViewBag.foo.Count == ViewBag.blah.Count)
{
for (int i = 0; i < ViewBag.foo.Count; i++ )
{
<option value="@ViewBag.foo[i]">@ViewBag.blah[i]</option>
}
}
}
另外,一些提示:
Dictionary<string, string>
?foo
和blah
不是他们的真名,对吗?ViewBag
用于与功能相关的数据(比如正在创建控件)。对于这种情况,首选答案 1 :(得分:0)
我不是肯定的我明白你在说什么,但是如果停止和ID之间存在1:1的关系,你为什么不创建一个包含两者的类,比如
public class Stop
{
public string Name { get; set; }
public int Id { get; set; }
}
并传入一个列表并执行一个循环:
@{
var stops = (IEnumerable<Stop>)ViewBag.Stops;
}
<select>
foreach (var stop in stops)
{
<option value="@stop.Id">@stop.Name</option>
}
</select>