0

簡単な買い物リストのテーブルを備えたカミソリビューがあります。表の最初の列には、各行にドロップダウン リストがあります。

各ドロップダウンリストを元に戻すために使用しているコードは次のとおりです

@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 と名前を指定するにはどうすればよいですか?

4

1 に答える 1

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++
}
于 2013-07-06T22:04:19.287 に答える