ビューの 1 つである SelectList を使用しようとしていますが、正しく入力されていません。適切な数のエントリ (4) を取得しますが、すべてSystem.Web.Mvc.SelectListItem
. コードでデバッガーを起動すると、奇妙なことが起こっていることがわかりました。私は何か間違ったことをしているに違いありませんが、何が悪いのかよくわかりません。
ViewModel からのコード:
public SelectList DeviceTypes {get; private set;}
....
var device_types = DataTableHelpers.DeviceTypes();
IEnumerable<SelectListItem> sl = device_types.Select(
dt => new SelectListItem { Selected = (dt.DeviceType == 1),
Text = dt.Description,
Value = dt.DeviceType.ToString() }).ToList();
DeviceTypes = new SelectList(sl);
ビューからのコード:
<%= Html.DropDownList("Type",Model.DeviceTypes) %>
したがって、デバッガーでこれを見ると、sl IEnumerable が正しくビルドされています。そこには 4 つの要素がすべて表示され、適切な Text プロパティと Value プロパティの値が示されています。ただし、SelectList コンストラクターを呼び出すと、そこに含まれる IEnumerable を展開すると、4 つのエントリがあることがわかりますが、それらのデータはすべて失われています。テキストは に設定されSystem.Web.Mvc.SelectListItem
、値はnull
です。
ToList()
呼び出しを aに変更し、ToArray()
完全に削除しようとしました。それは行動を変えませんでした。
ここで何が間違っていますか?