これは、私がdropdownlistを作成してhtml要素を作成する方法です。ドロップダウンリストのselectlistitemの値をモデルの文字列プロパティにバインドする方法
AccountController:
public ActionResult Index()
{
ViewBag.Towns = new SelectList(_skrsService.GetTowns(), "Value", "Text", 1);
return View();
}
...
public List<SelectListItem> GetTowns()
{
var list = UnitOfWork.Repository<SkrsIl>().OrderBy(x => x.Adi).Select(x => new SelectListItem()
{
Text = x.Adi,
Value = x.Kodu.ToString()
}).ToList();
return list;
}
Login.cshtml(出身地は、ビュー・ページにログインするbindnedモデル内の文字列フィールドです):
@Html.DropDownListFor(x => x.Hometown, ((SelectList)ViewBag.Towns), new { @class = "form-control", placeholder = "Doğum Yeri" })
私はこれが動作するように期待されるが、エラーを取得し、メッセージ:
"キーが 'Hometown'であるViewDataアイテムは、タイプが である必要があります。 'IEnumerable < SelectListItem>'を入力してください。
どうすれば正常に動作させることができますか?私はちょうど '故郷'のプロパティのselectem項目の値を期待しています
これは、 'viewBag.Towns'の値が' null'であることを意味します - [この回答]を参照してください(https://stackoverflow.com/questions/34366305/the-viewdata-item-that-has-the-key -xxx-of-of-type-system-int32-but-must-be-o)を使用します。また、 'new SelectList()'を使用することは無意味な余分なオーバーヘッドです - 同じIEnumerableを作成し、コンストラクタの4番目のパラメータは無視されます - 選択されたものを決定する 'Hometown'の値 –
こんにちは、あなたのコメントには私が必要以上にたくさん含まれています。 – TyForHelpDude