Каскадные раскрывающиеся списки MVC 3

Я не знаю, как именно иметь каскадные выпадающие списки.

Мой сценарий следующий:

Категория имеет предметы, а предметы имеют количество в зависимости от учреждения.

Я хочу иметь два DropDownList, один из которых вы выбираете категорию, следующий заполняется, когда вы делаете выбор первого с элементами в этой категории, и когда вы выбираете элемент, отображается таблица с количеством для каждого заведения.

Хорошо, это будет мой 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();
    }

тогда у меня было бы два моих DropDownList, которые должны публиковать значения в 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-адрес или как мне его отправить, поэтому, когда я отправляю другой идентификатор, он не смешивается, и я могу получить свои идентификаторы

Как получить значения каждого DropDownList в ActionResult? как они должны быть отправлены?

ОТВЕЧАТЬ

Я нашел ответ на этом сайте, просто хотел сообщить, что я сделал

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


person sergioadh    schedule 14.07.2011    source источник
comment
Хотите поделиться кодом? Вы можете сделать это через jQuery-Ajax, кстати.   -  person Alex R.    schedule 14.07.2011
comment
Ну, дело в том, что я не знаю, с чего начать... У меня есть два DropDownList.. которые зависят от другого.. и я могу получить значения, поместив их в ViewData в коде программной части, но в коде -behind в ActionResult Я не знаю, как получить идентификаторы обоих DropDownLists...   -  person sergioadh    schedule 14.07.2011
comment
Итак, у вас есть код. Разместите это здесь, чтобы мы могли видеть, что вызывает у вас проблемы.   -  person Alex R.    schedule 14.07.2011


Ответы (1)


То, как вы описываете свою проблему, звучит так, будто вы пытаетесь сделать слишком много дел одновременно.

Чтобы упростить объяснение, я собираюсь использовать вариант использования поиска страны/штата. (Когда я выбираю «Страна», раскрывающийся список «Штат» заполняется.)

У вас есть 4 элемента:

  1. Начальная загрузка формы (не выбрана ни страна, ни штат)
  2. Страна выбрана, штат заселен
  3. Выбрана страна, выбран штат
  4. Обработка ошибок (недопустимая комбинация страны и штата)

Когда я столкнулся с этим, я обрабатываю шаги 1 и 3 в представлении, подобном вашему примеру.

Так вы застряли на шаге 2? Что вы имеете в виду, когда говорите "как мне указать URL-адрес или как мне его отправить"?

Что касается меня, я выполню шаг 2, создав контроллер javascript и используя jquery для публикации и возврата объектов json, запускаемых при выборе раскрывающегося списка Country.

Я нашел музыкальный магазин MVC и Ужина ботаников очень полезны.

Если вам нужен пример json/jquery, посмотрите корзину в примере The Music Store.

person Christian Payne    schedule 14.07.2011
comment
да. в этом случае, я собираюсь прочитать PDF-файл музыкального магазина, спасибо, я отпишусь здесь, если найду решение - person sergioadh; 14.07.2011
comment
Я не нашел решения в музыкальном магазине MVC, они показывают несколько DropDownList, но они не такие, как мне нужно, как вы упомянули. Не могли бы вы показать мне, как бы вы выполнили второй шаг, затем шаг 3 с помощью jQuery и как ActionResult получает значения? - person sergioadh; 14.07.2011
comment
Я нашел ответ здесь kmsystems.squarespace.com /journal/2009/5/31/ но вы были правы.. Мне пришлось использовать JSON/jQuery - person sergioadh; 15.07.2011