Bu ViewData öğe anahtarı 'ANAHTAR' type 'Sistem.' ama yazın 'IEnumerable<SelectListİtem>' olmalı dize;
Bir veritabanı Seri-2-SQL ile eşleştirilmiş açılır liste, 2, ve bu hatayı almaya devam ediyorum ASP.NET MVC kullanarak doldurmak için çalışıyorum.
İkinci satırda 5* *türünde bir değişken ilan ediyorum çünkü kafam karıştı, ama bu hata bana bu durum böyle değil düşünüyorum. Bu çok basit bir iş olması gerekiyordu, ama mücadele ediyorum. Herhangi bir yardım için teşekkür ederiz.
İşte benim denetleyicisi ilginç bit:
public ActionResult Create()
{
var db = new DB();
IEnumerable<SelectListItem> basetypes = db.Basetypes.Select(
b => new SelectListItem { Value = b.basetype, Text = b.basetype });
ViewData["basetype"] = basetypes;
return View();
}
Ve burada benim bakış ilginç bit
<div class="editor-label">
<%: Html.LabelFor(model => model.basetype) %>
</div>
<div class="editor-field">
<%: Html.DropDownList("basetype") %>
<%: Html.ValidationMessageFor(model => model.basetype) %>
</div>
İşte Form gönderilirken SONRASI eylemi
// POST: /Meals/Create
[HttpPost]
public ActionResult Create(Meal meal)
{
if (ModelState.IsValid)
{
try
{
// TODO: Add insert logic here
var db = new DB();
db.Meals.InsertOnSubmit(meal);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View(meal);
}
}
else
{
return View(meal);
}
}
Teşekkürler.
CEVAP
Aynı sorun bende de vardı, ve sonunda cevabı buldum
Sorun formu doldurduktan sonra POST eylem, ModelState geçerli değil, ya da/try catch bir hata yakalamak, Görünüm döndü. Ama bu sefer Görünüm ViewData["basetype"]
doğru olarak sahip değil.
Yine, muhtemelen aynı kodu daha önce kullanılmış ile doldurmak gerekir, bu işlemi tekrarlayın:
var db = new DB();
IEnumerable<SelectListItem> basetypes = db.Basetypes.Select(
b => new SelectListItem { Value = b.basetype, Text = b.basetype });
ViewData["basetype"] = basetypes;
[HttpPost]
yöntemi return View(meal)
önce.
tam olarak bu sorunu çözmek
[HttpPost]
public ActionResult Create(Meal meal)
{
if (ModelState.IsValid)
{
try
{
// TODO: Add insert logic here
var db = new DB();
db.Meals.InsertOnSubmit(meal);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
var db = new DB();
IEnumerable<SelectListItem> basetypes = db.Basetypes.Select(
b => new SelectListItem { Value = b.basetype, Text = b.basetype });
ViewData["basetype"] = basetypes;
return View(meal);
}
}
else
{
var db = new DB();
IEnumerable<SelectListItem> basetypes = db.Basetypes.Select(
b => new SelectListItem { Value = b.basetype, Text = b.basetype });
ViewData["basetype"] = basetypes;
return View(meal);
}
}
Bu soru oldukça eski olduğunu biliyorum, ama burada başka sonra gelebilir o yüzden bugün burada aynı sorunla geldim...
Yazın 'IEnumerable< ViewData öğ...
Yazın 'Sistem nesne artığını açıl...
Bu ne anlama geliyor? &;'NSUnknow...
IList virgülle ayrılmış listesi oluştu...
Neden verim sıradan bir IEnumerable ku...