Ath*_*hul 3 c# razor entity-framework-6 asp.net-mvc-5
我的代码是这样的
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
调节器
public ActionResult Create()
{
ViewBag.DepartmentID = new SelectList(db.Departments, "ID", "Name");
ViewBag.ProcedureSubCategoryID = new SelectList(db.ProcedureSubCategories, "ID", "Name");
return View();
}
Run Code Online (Sandbox Code Playgroud)
在我看来
@Html.DropDownList("ProcedureID", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ProcedureID)
Run Code Online (Sandbox Code Playgroud)
一切看起来都没问题,但它会引发错误
There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'ProcedureID'.
Run Code Online (Sandbox Code Playgroud)
谁能指出我在这里做错了什么?
错误是你在ViewBag.ProcedureSubCategoryID
传递ProcedureID
int 时将它放入,Html.DropDownList()
并且你传递SelectList
参数null
.快速解决方法是 在第一个参数中替换ProcedureSubCategoryID
为ProcedureID
in Html.DropDownList()
作为键:
你有三种方法来解决这个问题.
而不是传递null
接受类型的第二个参数,SelectList
你可以这样做:
@Html.DropDownList("ProcedureID", ViewBag.ProcedureSubCategoryID as SelectList, new { @class="form-data" })
Run Code Online (Sandbox Code Playgroud)
public ActionResult Create()
{
ViewBag.DepartmentID = new SelectList(db.Departments, "ID", "Name");
ViewBag.ProcedureSubCategoryID = new SelectList(db.ProcedureSubCategories, "ID", "Name");
return View();
}
@Html.DropDownList("ProcedureSubCategoryID", null, new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)
或者替代方法是将其存储ProcedureID
在您的操作中:
public ActionResult Create()
{
ViewBag.DepartmentID = new SelectList(db.Departments, "ID", "Name");
ViewBag.ProcedureID = new SelectList(db.ProcedureSubCategories, "ID", "Name");
return View();
}
Run Code Online (Sandbox Code Playgroud)
在视图中:
@Html.DropDownList("ProcedureID", null, new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29752 次 |
最近记录: |