これはシンプルにする必要があるようですが、動作させる方法を理解できません。RazorとHtml.DropDownList:リストの各行のドロップダウンに選択した値を設定しますか?
私のデータモデルには、 "Server"テーブルと "ServerType"テーブルがあります。両方のテーブルのPKはintであり、ServerはServerTypeIdのフィールドであるServerTypeIdを持ちます。
@model IEnumerable<Server>
<table border="1">
<tr>
<th>
Server Type
</th>
<th>
Name
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DropDownListFor(modelItem => item.ServerTypeId, (IEnumerable<SelectListItem>)ViewData["ServerType"])
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
私のコントローラがあります:
私はIEnumerableをに入力されレイザーList.cshtmlを持って
public ActionResult List()
{
var s = GetServers();
ViewData["ServerType"] = GetServerTypes();
return View("List", s);
}
private List<SelectListItem> GetServerTypes()
{
string id;
SelectListItem si;
List<SelectListItem> sl = new List<SelectListItem>();
IQueryable<ServerType> items = (from t in _entities.ServerTypes select t);
foreach (var item in items)
{
id = item.Id.ToString();
si = new SelectListItem { Value = id, Text = item.Description };
sl.Add(si);
}
return sl;
}
これは、データを表示しますが、ドロップダウンに値が選択されていません。私はHtml.DropDownListとHtml.DropDownListForの両方を、ViewDataプロパティの名前の異なる順列を使用して試しました。
Selectedプロパティを設定するためにServerTypeのコピーを持つビューモデルを作成する必要がありますか?または、私のIDがintで、SelectItemList Valueプロパティが文字列なので問題ですか?