我试图从映射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