MVC 3 Cascading DropDownLists

I don't know how to exactly have Cascading DropDownLists

My scenario is the next:

Category has Items and Items have quantities depending on Establishment

I want to have two DropDownLists one which you select a Category, next one is populated when you make a selection of the first with the Items in that Category, and when you select the Item a table with the quantities for each establishment is shown.

Ok this would be my 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();

then, I would have my two DropDownLists that should post values to Item_ID and Category_ID ... first category then item

@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" })

This is what I don't know how to do ... how should I put the URL or how should I send it, so when I send the other ID does'nt mix up and I can receive my IDs

How do I receive the values of each DropDownList in the ActionResult? how should they be sent?


I found the answer from this website, just wanted to let know what I did


The way you are describing your problem sounds like you are trying to do too many things at once.

To make it easier to explain, I'm going to use the Country / State lookup use case. (When I select "Country", the "State" drop down is populated.)

You have 4 elements:

  1. Initial form load (no country, no state selected)
  2. Country selected, State populated
  3. Country selected, State selected
  4. Error handling (invalid Country & State combination)

When I have come across this, I handle Step 1 & 3 in a view similar to your example.

So are you getting stuck on step 2? What do you mean when you say " how should I put the URL or how should I send it,"

For me, I'll address step 2 by creating javascript controller and use jquery to post & return json objects triggered when the Country dropdown box is selected.

I found the MVC Music Store and Nerd Dinner examples to be extremely helpful.

If you need an example of the json / jquery, see the shopping cart in The Music Store example.

Need Your Help

Backspace on Cygwin Screen not working for Windows 2003 Server?

cygwin windows-server-2003 screen

I updated a working Cygwin/Screen setup on Windows 2k3 Server to Cygwin v1.7.2 and Screen 4.00.03. After updating, backspace no longer works. I haven't made any changes to my system or configuratio...

Overlay an image segmentation with numpy and matplotlib

python arrays image numpy matplotlib

I am trying to overlay two images. The first one is a 512x512 numpy array (from a CT image). The second one is also a 512x512 numpy array but I am just interested in the pixels where the value is ...