C# System.InvalidOperationException:&x27;没有类型为';IEnumerable<;选择列表项>';那有钥匙';项目'';

C# System.InvalidOperationException:&x27;没有类型为';IEnumerable<;选择列表项>';那有钥匙';项目'';,c#,.net,asp.net-mvc,model-view-controller,C#,.net,Asp.net Mvc,Model View Controller,我是c#新手,正在尝试制作一个简单的MVC Web应用程序 ///这是create.cshtml <div class="form-group"> @Html.LabelFor(model => model.MembershipID, "MembershipID", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10">

我是c#新手,正在尝试制作一个简单的MVC Web应用程序 ///这是create.cshtml

<div class="form-group">
    @Html.LabelFor(model => model.MembershipID, "MembershipID", htmlAttributes: new 
    { @class = "control-label col-md-2" })
    <div class="col-md-10">
       @Html.DropDownList("items",ViewData["items"] as IEnumerable<SelectListItem>, new { @class 
    = "form-control" })
       @Html.ValidationMessageFor(model => model.MembershipID, "", new { @class = "text-danger" 
      })
    </div>
</div>

@LabelFor(model=>model.MembershipID,“MembershipID”,htmlAttributes:new
{@class=“控制标签col-md-2”})
@DropDownList(“items”,ViewData[“items”]作为IEnumerable,新的{@class
=“表单控件”})
@Html.ValidationMessageFor(model=>model.MembershipID,“,new{@class=“text-danger”
})
这是我的学生管理员

public ActionResult Create()
{
     List<SelectListItem> items = new List<SelectListItem>();
     items.Add(new SelectListItem { Text = "Day", Value = "0" });
     items.Add(new SelectListItem { Text = "Month", Value = "1" });
     items.Add(new SelectListItem { Text = "Direct-Debit", Value = "2" });
     items.Add(new SelectListItem { Text = "Other", Value = "3" });

     ViewData["MembershipID"] = items;
     return View();
}

[HttpPost] 
public ActionResult Create(Student student) { 
    try { // TODO: Add insert logic here 
        using (BlackBeardDBEntities db = new BlackBeardDBEntities()) { 
            db.Students.Add(student); 
            db.SaveChanges(); 
        } 
        return RedirectToAction("Index"); 
     } catch { 
        return View(); 
     } 
}
public ActionResult Create()
{
列表项=新列表();
添加(新SelectListItem{Text=“Day”,Value=“0”});
添加(新SelectListItem{Text=“Month”,Value=“1”});
items.Add(新建SelectListItem{Text=“Direct Debit”,Value=“2”});
添加(新SelectListItem{Text=“Other”,Value=“3”});
ViewData[“MembershipID”]=项目;
返回视图();
}
[HttpPost]
公共行动结果创建(学生){
尝试{//TODO:在此处添加插入逻辑
使用(blackbeardbenties db=new blackbeardbenties()){
db.Students.Add(学生);
db.SaveChanges();
} 
返回操作(“索引”);
}捕获{
返回视图();
} 
}
视图数据[“项”]
未在控制器中声明。要访问该数据,您需要进行更改

@Html.DropDownList("items",ViewData["items"] 

@Html.DropDownList(“items”,新选择列表((IEnumerable)ViewData[“MembershipID]”)

在控制器中,您将ViewData声明为ViewData[“MembershipId”],而在视图中,您使用的ViewData[“items”]是错误的。请确保在这两种情况下,ViewData的键都相同。 在控制器中,将ViewData[“MembershipId”]替换为ViewData[“items”]。 此外,您还将数据存储在viewdata中作为列表,并在view中作为IEnumerable使用。 对其进行更改,然后尝试构建。

两件事:

如注释中所述,将
Controller
方法中的
ViewData[“MembershipID”]=items;
更改为
ViewData[“items”]=items;

其次:您需要将
selectlist
项显示为:

@Html.DropDownList("items",ViewData["items"] as List<SelectListItem>, new { @class="form-control" })
@Html.DropDownList(“items”,ViewData[“items”]作为列表,新建{@class=“form control”})

确保ViewData键匹配。您在控制器中有
ViewData[“MembershipID”]
并且在视图中有
ViewData[“items”]
我仍然会收到错误:没有类型为“IEnumerable”的ViewData项具有键“items”。'请尝试使用更新的代码。还可以检查Html中的另一个
ViewData[“items”]
referenceNow获得错误:IEnumerable接口公开枚举器,该枚举器支持对非泛型集合进行简单迭代。:IEnumerableSorry,我错过了类型。现在,当我单击create:System.ArgumentNullException:'值不能为null。参数名称:items'
@Html.DropDownList("items",ViewData["items"] as List<SelectListItem>, new { @class="form-control" })