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");