ASP.NET MVC3 - 处理强类型列表框中的多个值的问题

时间:2011-09-02 15:15:06

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

我在处理强类型列表框中的多个值时遇到问题。 我有一个可以有多个技术类的事件类。

这是我简化的Event类:

public class Event
{
    public int ID { get; set; }
    public IEnumerable<Technology> Technologies { get; set; }
}

我正在使用这个

public List<Technology> Technologies { get; set; }

并改为

public IEnumerable<Technology> Technologies { get; set; }

但仍然遇到同样的错误。

这是技术课,这是一个非常简单的课程

public class Technology
{
    public int ID { get; set; }
    public String Description{ get; set; }
}

这是我的简化控制器

public ActionResult Create()
    {
        var TechnologyQry = from d in db.Technology
                              orderby d.Description
                              select new { d.ID, d.Description };
        ViewBag.eventTechnology = new MultiSelectList(TechnologyQry ,"ID","Description");
        return View();
    }

这里是渲染ListBox的视图部分

@Html.ListBoxFor(model => model.Technologies, (MultiSelectList)ViewBag.eventTechnology)

然后是我得到的错误

  

具有键'Technologies'的ViewData项的类型为'System.Collections.Generic.List`1 [[stuff.Models.Technology,stuff,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null] ]'但必须是'IEnumerable'类型./

抱歉,英语不是我的主要语言。 我很感激我能得到任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:0)

您在视图@model ...中定义了哪些模型? 除此之外,Create方法不会返回用于/作为模型的东西。 如果您希望列表框在name属性中称为“Technologies”,则可以使用:

@Html.ListBox("Technologies", (MultiSelectList)ViewBag.eventTechnology)