Изменение раскрывающегося списка выбора при выборе другого элемента раскрывающегося списка RAZOR

У меня есть раскрывающийся список, содержащий список компаний, и еще один раскрывающийся список, содержащий список филиалов компании. Мне нужно, чтобы раскрывающийся список ветвей зависел от выбранного элемента компании. Поэтому, когда пользователь выбирает компанию 1 из раскрывающегося списка, раскрывающийся список ветвей должен заполнять список ветвями, которые находятся в компании 1. Я не знаю, как это сделать. Вот как выглядят мои выпадающие списки:

            <tr>
                <td class="search-label">
                    @Html.Label("Company: ")
                </td>
                <td>
                    @Html.DropDownList("cono", (List<SelectListItem>)ViewBag.CompanyList)
                </td>
            </tr>
            <tr>
                <td class="search-label">
                    @Html.Label("Branch: ")
                </td>
                <td>
                    @Html.DropDownList("branch", (List<SelectListItem>)ViewBag.BranchList)
                </td>
            </tr>

Вот мое действие:

    [HttpGet]
    public ActionResult Default()
    {
        var currentUserCono = GetCurrentUserCono();
        //Set the Viewbags to populate the drop down menus on the view
        if (Session["cono"] != null)
        {
            currentUserCono = (int)Session["cono"];
        }
        ViewBag.CompanyList = _selectListLib.GetCompanies(currentUserCono);
        ViewBag.BranchList = Session["branch"] != null ? _selectListLib.GetBranches(currentUserCono,(string)Session["branch"]) : _selectListLib.GetBranches(currentUserCono);
        ViewBag.StatusTypeList = Session["statustype"] != null ? _selectListLib.GetStatusTypes((bool)Session["statustype"]) : _selectListLib.GetStatusTypes();

        return View();
    }

person user3788671    schedule 21.08.2014    source источник
comment
Просто используйте мой плагин jquery github.com/fals/jquery-cascadeselect, это сделает вашу жизнь проще   -  person Fals    schedule 21.08.2014
comment
Каскадирование с использованием Ajax решит эту проблему.   -  person Arijit Mukherjee    schedule 21.08.2014
comment
Ага, @ArijitMukherjee, это то, что мой плагин делает автоматически!!! :D github.com/fals/jquery-cascadeselect   -  person Fals    schedule 21.08.2014
comment
Спасибо вам, ребята! Я собираюсь изучить это. Похоже, это мой лучший вариант прямо сейчас, ха-ха   -  person user3788671    schedule 21.08.2014


Ответы (1)


У вас есть две (больше, но две основные) популярные техники:

  • Создайте действие (JSONResult) с идентификатором компании в качестве параметра, который возвращает ветви, сериализованные в JSON. Затем используйте jQuery, чтобы получить этот список через $.getJSON, привязанный к событию jQuery .change() раскрывающегося списка Company. Затем вы можете выполнить итерацию по этому списку JSON и добавить элементы параметров в раскрывающийся список Branch.

Or

  • Создайте действие (PartialViewResult) с идентификатором компании в качестве параметра, которое возвращает частичное представление, содержащее раскрывающийся список вашей ветки, заполненный соответствующими ветвями в представлении. Используйте jQuery .load() для загрузки этого представления, снова привязанного к событию jQuery .change() в раскрывающемся списке Company. Чтобы это работало, вам нужно будет использовать идентификатор вашего элемента, окружающего ветку, чтобы настроить его для $("#yourTDId").load("/Controller/Action/" + $("#cono"). вал())

Это два самых простых способа добиться того, что вам нужно. Я надеюсь, что это поможет и удачи с вашим приложением.

person Moby's Stunt Double    schedule 21.08.2014