我想创建一个以单个下拉列表开头的索引页面。一旦用户选择了一个类别,将出现第二个下拉列表(通过Ajax调用),允许用户选择要编辑的模型项。但是,使用我的控制器中的代码并在下面查看,我收到以下错误
The model item passed into the dictionary is of type 'System.Collections.Generic.List'1[Monet.Models.DropDownValues]', but this dictionary requires a model item of type 'Monet.Models.DropDownValues'.
控制器
public ActionResult Index()
{
//redirect if security is not met.
if (!Security.IsAdmin(User)) return RedirectToAction("Message", "Home", new { id = 1 });
var dropDownValues = (from b in db.DropDownValues
orderby b.Model
select b.Model).Distinct();
ViewBag.CategoryOptions = new SelectList(dropDownValues, "Model", "Model");
return View(db.DropDownValues.ToList());
}
查看
@model Monet.Models.DropDownValues
@{
ViewBag.Title = "Monet Administration";
}
<h2>Monet Administration</h2>
Update values for drop down boxes
<div>
<span style="float: left;">
<div class="editor-label">
@Html.LabelFor(model => model.Model)
</div>
<div class="editor-field">
@Html.DropDownList("Categories", (SelectList)ViewBag.CategoryOptions, "")
@Html.ValidationMessageFor(model => model.Model)
</div>
</span>
<div style="clear: both;"></div>
</div>
答案 0 :(得分:1)
您的视图需要Monet.Models.DropDownValues
的单个实例,并且您将其传递给List<Monet.Models.DropDownValues>
你应该从控制器传递一个项目(如果这是有道理的):
return View(db.DropDownValues.ToList().First());
或在视图中更改您的模型类型:
@model List<Monet.Models.DropDownValues>