Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有类型为';IEnumerable<;选择列表项>';这是关键;“关键”;_C#_Razor_Asp.net Mvc 5_Entity Framework 6 - Fatal编程技术网

C# 没有类型为';IEnumerable<;选择列表项>';这是关键;“关键”;

C# 没有类型为';IEnumerable<;选择列表项>';这是关键;“关键”;,c#,razor,asp.net-mvc-5,entity-framework-6,C#,Razor,Asp.net Mvc 5,Entity Framework 6,我的代码是这样的 namespace DiagnosisApp.Models { public class ProcedurePrice { public int ID { get; set; } public int DepartmentID { get; set; } public int ProcedureID { get; set; } public int InsuranceProviderID {

我的代码是这样的

 namespace DiagnosisApp.Models
{
    public class ProcedurePrice
    {
        public int ID { get; set; }


        public int DepartmentID { get; set; }
        public int ProcedureID { get; set; }
        public int InsuranceProviderID { get; set; }
        public int ProcedureCategoryID { get; set; }
        public int ProcedureSubCategoryID { get; set; }



        [ForeignKey("ID")]
        public virtual Department Department { get; set; }

        [ForeignKey("ID")]
        public virtual InsuranceProvider InsuranceProvider { get; set; }

        [ForeignKey("ID")]
        public virtual ProcedureCategory ProcedureCategory { get; set; }
        [ForeignKey("ID")]
        public virtual ProcedureSubCategory ProcedureSubCategory { get; set; }
    }
}
控制器

  public ActionResult Create()
        {
            ViewBag.DepartmentID = new SelectList(db.Departments, "ID", "Name");
            ViewBag.ProcedureSubCategoryID = new SelectList(db.ProcedureSubCategories, "ID", "Name");
            return View();
        }
在我看来

 @Html.DropDownList("ProcedureID", null, new { @class = "form-control" })
  @Html.ValidationMessageFor(model => model.ProcedureID)
我觉得一切都很好,但这会出错

There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'ProcedureID'.
没有具有键“ProcedureID”的“IEnumerable”类型的ViewData项。

有人能指出我在这里做错了什么吗?

错误在于,当你传递
ProcedureID
时,你把它放在了
ViewBag.ProcedureSubCategoryID
中,同时你也传递了
SelectList
参数
null
。快速修复方法是将
Html.DropDownList()
中的
procedureubcategoryid
替换为
ProcedureID
,作为第一个参数的键:

有三种方法可以解决这个问题

方式1: 您可以执行以下操作,而不是在第二个参数中传递
null
,该参数接受类型为
SelectList

@Html.DropDownList("ProcedureID", ViewBag.ProcedureSubCategoryID as SelectList, new  { @class="form-data" })
方式2: 方式3: 或者,也可以将其存储在您的操作中的
ProcedureID

public ActionResult Create()
{
       ViewBag.DepartmentID = new SelectList(db.Departments, "ID", "Name");
       ViewBag.ProcedureID = new SelectList(db.ProcedureSubCategories, "ID", "Name");
       return View();
}
鉴于:

@Html.DropDownList("ProcedureID", null, new { @class = "form-control" })

我想你错过了类似的东西

ViewBag.ProcedureID = new SelectList(db.ProcedureCategory, "ID", "Name");

我认为您必须将ViewBag.ProcedureId

化,我认为这个字符串
@Html.DropDownList(“ProcedureId”,null,new{@class=“form control”})有问题。
您应该指定
SelectList
我认为类似于
@Html.DropDownList(“ProcedureId”,Model.procedurecategratory,new{@class=“form control”})
如果您像使用
ProcedureSubCategories
那样在创建控制器中的某个位置为ex填充此列表,则很难理解您实际想要绑定到什么。如果要绑定到
int-ProcedureID
,则需要为过程包括
SelectList
(最好使用视图模型,否则
ViewBag
),并将其用作
@Html.DropDownList
的第二个参数!这就是我需要的谢谢你!
ViewBag.ProcedureID = new SelectList(db.ProcedureCategory, "ID", "Name");