0

カスケード ドロップダウン リストを作成しようとしていますが、エラーが発生します。

これには、コントローラー クラスで実行しようとしているものが含まれています。

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<SelectListItem>key を持つタイプの ViewData アイテムはありませんpjt_SubCat_ID

コード:

<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>

誰かがここで何がうまくいかないのか教えてもらえますか?

4

1 に答える 1

0

問題は、エンジンがビューバッグから SelectList を取得しようとしていて、それが見つからないことです。「pjt_SubCat_ID」の下のビューバッグに保存したアイテムをドロップダウンに表示したいと思いますが、質問にリストしたコードのどこにもそのアイテムをビューバッグに追加していません。

それが SubCategory() メソッドから返されたデータであると想定されている場合、ビューバッグにそのデータが見つからないため、元の SelectList (カテゴリ ID 1) のクリック イベントでこのメソッドを呼び出してバインドする JavaScript が必要です。サブカテゴリ one に返されたデータ。

于 2013-05-15T10:24:59.783 に答える