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

Posted

技术标签:

【中文标题】ASP.NET MVC3 - 处理来自强类型列表框的多个值的问题【英文标题】:ASP.NET MVC3 - problem handling multiple values from a strongly typed Listbox 【发布时间】:2011-11-09 06:39:24 【问题描述】:

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

这是我的简化事件类:

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】:

你在视图@model ...中定义了什么模型? 除此之外, Create 方法没有返回用于/作为模型的东西。 如果您希望列表框在名称属性中被称为“技术”,您可以改用:

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

【讨论】:

以上是关于ASP.NET MVC3 - 处理来自强类型列表框的多个值的问题的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc3 返回多个json列表

在 ASP.NET MVC3 中正确使用 TempData?

带有 DropDownList 的 ASP.NET MVC 强类型视图

在 ASP.NET MVC 4 中添加服务引用

ASP.Net Core MVC 如何针对强类型模型发布未知数量的字段

如何根据 asp.net mvc4 中的模型列表填充 ListBox?