MVC 3 Cascading DropDownLists

时间:2011-07-14 04:55:39

标签: c# javascript asp.net-mvc-3 drop-down-menu cascadingdropdown

我不知道如何准确地拥有Cascading DropDownLists

我的情景是下一个:

类别的项目和项目的数量取决于建立

我希望有两个DropDownLists,您可以选择一个类别,当您选择第一个包含该类别中的项目时,将填充下一个,当您选择项目时,每个企业的数量为所示。

好的,这将是我的ActionResult

public ActionResult ItemByClinic(Guid? Item_ID, Guid? Category_ID)
    {
        ViewData["Categories"] = InventoryDb.Categories;
        if (Category_ID != null)
        {
            ViewBag.Category_ID = Category_ID;
            ViewData["Items"] = InventoryDb.Items.Where(i => i.Category.ID == Category_ID);
            if (Item_ID != null)
            {
                ViewBag.Item_ID = Item_ID;
                ViewData["Inventory"] = InventoryDb.Items.Single(i => i.ID == Item_ID).Inventory;
            }
        }
        return View();
    }

然后,我会让我的两个DropDownLists应该将值发布到Item_ID和Category_ID ...第一个类别然后是项目

@Html.DropDownList("Categories", new SelectList((IQueryable<Inventario_Data.Models.Category>)ViewData["Categories"], "ID", "Name", ViewBag.Category_ID), "Select an Item Category", new { onchange = "window.location.href = '/Inventory/ItemByClinic/Categody_ID=' + this.value" })

这是我不知道该怎么办...我应该如何设置URL或者我应该如何发送它,所以当我发送其他ID时不会混淆我可以收到我的ID

如何在ActionResult中收到每个DropDownList的值?应该如何发送?

  

ANSWER

我从这个网站找到答案,只是想知道我做了什么

  

http://kmsystems.squarespace.com/journal/2009/5/31/aspnet-mvc-cascading-dropdownlists.html

1 个答案:

答案 0 :(得分:2)

您描述问题的方式听起来像是在试图同时做太多事情。

为了便于解释,我将使用Country / State查找用例。 (当我选择“国家/地区”时,会填充“状态”下拉列表。)

你有4个元素:

  1. 初始表单加载(无国家/地区,未选择状态)
  2. 国家/地区,州填充
  3. 选择国家/地区,
  4. 错误处理(无效的国家/地区和州组合)
  5. 当我遇到这个时,我会处理第1步&amp; 3在类似于你的例子的视图中。

    你是否陷入第2步?当你说“我应该如何放置URL或我应该如何发送它”时,你是什么意思,

    对我来说,我将通过创建javascript控制器并使用jquery发布&amp;来解决第2步。选择“国家/地区”下拉框时,将触发返回的json对象。

    我发现MVC Music StoreNerd Dinner示例非常有用。

    如果您需要json / jquery的示例,请参阅音乐商店示例中的购物车。