ページが最初に読み込まれるときにドロップダウンリストをバインドできますが、このページがポストバックしたときにエラーが発生します:'CicekListesi'キーを持つ 'IEnumerable <SelectListItem>'タイプのViewDataアイテムがありません
There is no ViewData item of type
IEnumerable<SelectListItem>
that has the key 'CicekListesi'.
は私のコントローラは、次のようになります。
[HttpGet]
public ActionResult UrunEkleCicek()
{
ApplicationDbContext db = new ApplicationDbContext();
ViewData["CicekListesi"] = new SelectList(db.CicekTuru, "cicekID", "cicekAdi");
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UrunEkleCicek(Urun UrunBilgi)
{
ApplicationDbContext db = new ApplicationDbContext();
// ...
return View();
}
ビューは次のようになります。
@using (Html.BeginForm("UrunEkleCicek","EkleCikart", FormMethod.Post ,new{enctype="multipart/form-data" }))
{
@Html.AntiForgeryToken();
@Html.DropDownList("CicekListesi", null, "Çiçek türü seçin", new { @class = "form-control"})*@
<input type="submit" value="Ürünü Ekle" class="btn btn-success" />
}
がどのように修正することができます この?
あなたのPOSTアクションメソッドで 'ViewData [" CicekListesi "]'を再び設定することによって。 – CodeCaster
'CicekListesi'の値は、ビューを返す前にPOSTメソッドで' SelectList'を再割り当てしなかったので、 'null'です。 [この質問/回答]と同じです(http://stackoverflow.com/questions/34366305/the-viewdata-item-that-has-the-key-xxx-is-of-type-system-int32-but-must)。 -be-o)、好きな 'DropDownListFor()'ではなく 'DropDownList()'を使用しているために別のメッセージが表示される –
@CodeCaster私はmvcで新しくなっています。あなたはコードで書くことができますか? :) –