Asp.net mvc 4 级联下拉列表

Asp.net mvc 4 级联下拉列表,asp.net-mvc-4,razor,cascadingdropdown,Asp.net Mvc 4,Razor,Cascadingdropdown,我试图创建一个级联下拉列表,但我得到了一个错误 这包含我在控制器类中尝试执行的操作: public ActionResult Create() { ViewBag.Status = new SelectList(db.pjt_Statuses, "pjt_Status_ID", "StatusName"); ViewBag.CategoryID = new SelectList(db.pjt_Categories, "pjt_Category_ID", "CatName");

我试图创建一个级联下拉列表,但我得到了一个错误

这包含我在控制器类中尝试执行的操作:

public ActionResult Create()
{
    ViewBag.Status = new SelectList(db.pjt_Statuses, "pjt_Status_ID", "StatusName");
    ViewBag.CategoryID = new SelectList(db.pjt_Categories, "pjt_Category_ID", "CatName");
    return View();
}

public ActionResult SubCategory(int id)
{
    var SubCategory = from s in db.pjt_SubCategories
                      where s.CategoryID == id
                     select s;
    return Json(SubCategory.ToList());
}

// POST: /Project/Create
[HttpPost]
public ActionResult Create(pjt_Projects pjt_projects)
{
    if (ModelState.IsValid)
    {
        pjt_projects.CreationDate = DateTime.Now;
        db.pjt_Projects.Add(pjt_projects);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    ViewBag.Status = new SelectList(db.pjt_Statuses, "pjt_Status_ID", "StatusName", pjt_projects.Status);
    ViewBag.CategoryID = new SelectList(db.pjt_Categories, "pjt_Category_ID", "CatName", pjt_projects.CategoryID);
    return View(pjt_projects);
}
查看

这显示了我在前端尝试做什么。我在下面的视图代码中遇到一个粗体行错误。我得到的错误是:

没有类型为
IEnumerable
的ViewData项具有键
pjt\u SubCat\u ID

代码:


@LabelFor(model=>model.CategoryID,“Category”)
@Html.DropDownList(“CategoryID”,String.Empty)@*,null,new{@onchange=“FetchSubCategories();”})*@

@Html.ValidationMessageFor(model=>model.CategoryID) 子类别 @DropDownList(“pjt_SubCat_ID”,String.Empty)
@Html.ValidationMessageFor(model=>model.subcategorid)

有人能告诉我这里出了什么问题吗?

问题是引擎试图从viewbag中获取SelectList,但找不到它。我猜您希望下拉列表显示您在“pjt_SubCat_ID”下存储在viewbag中的项目,但您没有将该项目添加到问题中列出的代码中的viewbag中


如果这应该是从SubCategory()方法返回的数据,则在viewbag中找不到该数据,您应该有一个javascript,在原始SelectList(category id one)的单击事件中调用该方法,并将返回的数据绑定到SubCategory one。

哪一条粗体线?这一行:@Html.DropDownList(“pjt_SubCat_ID”,String.Empty)?O它没有变为粗体,是的,是那一行,抱歉@JTMonOkay声音。如果你不介意我问你能帮我完成这件事吗?如果你能帮助我,那就太好了。只要谷歌“级联DropdOnlistMVC4”,你就会得到你需要的所有帮助:)这能帮我吗?
<div class="span3 offset1">
    @Html.LabelFor(model => model.CategoryID, "Category")
    @Html.DropDownList("CategoryID", String.Empty)@*, null, new { @onchange = "FetchSubCategories();" })*@
    <br />
    @Html.ValidationMessageFor(model => model.CategoryID)
</div>
<div class="span3 offset1">
    <label>Sub Category</label>
        @Html.DropDownList("pjt_SubCat_ID", String.Empty)
    <br />
    @Html.ValidationMessageFor(model => model.SubCategoryID)
</div>