如何创建在Razor中的循环中创建的唯一ID和名称

时间:2013-07-06 21:39:22

标签: c# asp.net-mvc-4

我有一个剃刀视图,有一张简单的购物清单。在表格的第一列中,每行都有一个下拉列表。

以下是我用来带回每个下拉列表的代码

@foreach (var food in shoppingList.Foods)
{   
    <tr>
        <td>@Html.DropDownListFor(m => food , new SelectList(Model.Foods,"FoodID","Name",@food.FoodID))</td>
        <td>@food.Name</td>
        <td>@food.Price</td>
    </tr>
}

使用此代码,我可以根据需要获取数据,但我想为每个选择提供唯一的ID /名称。目前,这是生成的html。

第一次选择

<td><select id="food" name="food">
<option selected="selected" value="1">Chicken</option>
<option value="2">Milk</option>
<option value="3">Bread</option>
<option value="4">Apple</option>
<option value="5">Cake</option>
<option value="6">Ham</option>
</select></td>

第二次选择

<td><select id="food" name="food">
<option value="1">Chicken</option>
<option selected="selected" value="2">Milk</option>
<option value="3">Bread</option>
<option value="4">Apple</option>
<option value="5">Cake</option>
<option value="6">Ham</option>
</select></td>

请注意,他们都有id =“food”name =“food”。

我如何才能提供这些唯一的ID和名称?

1 个答案:

答案 0 :(得分:1)

不确定您是如何考虑将其绑定到您的模型上的,但这里有几种方法可以做到:

1

@{
    int i = 0;
}
@foreach (var food in shoppingList.Foods)
{
    @Html.DropDownList("food-" + i.ToString() , new SelectList(Model.Foods,"FoodID","Name",@food.FoodID))
    i++
}

2

@{
    int i = 0;
}
@foreach (var food in shoppingList.Foods)
{
    @Html.DropDownListFor(m => food , new SelectList(Model.Foods,"FoodID","Name",@food.FoodID), new { @id = "food-" + i.ToString() })
    i++
}