0

我想创建一个以单个下拉列表开头的索引页面。一旦用户选择了一个类别,就会出现第二个下拉列表(通过 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>
4

1 回答 1

1

您的 View 需要一个实例,Monet.Models.DropDownValues并且您将其传递给List<Monet.Models.DropDownValues>

您应该从控制器传递一个项目(如果有意义的话):

return View(db.DropDownValues.ToList().First());

或在视图中更改您的模型类型:

@model List<Monet.Models.DropDownValues>
于 2013-05-09T22:32:12.223 回答