我試圖從映射Linq-2的數據庫中填充下拉列表, SQL,使用ASP.NET MVC 2,並不斷收到此錯誤。具有'MY KEY'鍵的ViewData項的類型爲'System.String',但必須是'IEnumerable <SelectListItem>'的類型
我很困惑,因爲我在第二行宣佈了一個類型爲IEnumerable<SelectListItem>
的變量,但是這個錯誤讓我覺得情況並非如此。我覺得這應該很簡單,但我很掙扎。任何幫助表示讚賞。
這裏是我的控制器的有趣的位:
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();
}
,這裏是我的觀點的有趣的位:
<div class="editor-label">
<%: Html.LabelFor(model => model.basetype) %>
</div>
<div class="editor-field">
<%: Html.DropDownList("basetype") %>
<%: Html.ValidationMessageFor(model => model.basetype) %>
</div>
這裏是POST動作提交表單
// 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);
}
}
時
謝謝。
奇怪,看起來對我來說還行:/ – 2010-08-03 04:13:17
下拉列表出現在視圖中就好了。它從數據庫中填充,因爲它應該,但是當我發佈表單時,我得到這些錯誤。 – JBibbs 2010-08-04 02:08:34
已接受答案摘要:確保在控制器的get和post操作中填充列表。忘記做這件事很容易,然後浪費時間尋找更復雜的錯誤。 – 2015-05-07 13:39:06