使用单个下拉列表创建索引

时间:2013-05-09 22:25:30

标签: asp.net-mvc asp.net-mvc-3 html-select

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

1 个答案:

答案 0 :(得分:1)

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

你应该从控制器传递一个项目(如果这是有道理的):

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

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

@model List<Monet.Models.DropDownValues>