如何根据同一视图上另一个选择列表中的选定项填充MVC选择列表



我在一个视图上有两个选择列表。我需要根据第一个选择列表的选定项目的值填充第二个选择列表的项目,而无需发布整个页面。实现这一目标的最佳方法是什么?

以下是视图中的选择列表:

                <tr>
                <td>
                    <div class="editor-label">
                        @Html.LabelFor(model => model.PersonnelAreaID)
                    </div>
                </td>
                <td>
                    <div class="editor-field">
                        @Html.DropDownListFor(model => model.PersonnelAreaID, TLMS_DropDownLists.PersonnelAreas)
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <div class="editor-label">
                        @Html.LabelFor(model => model.SupervisorID)
                    </div>
                </td>
                <td>
                    <div class="editor-field">
                        @Html.DropDownListFor(model => model.PersonnelAreaID, TLMS_DropDownLists.ApprovingAuthorities)
                    </div>
                </td>
            </tr>

以下是我目前填充它们的方法:

        public static List<SelectListItem> PersonnelAreas
    {
        get
        {
            List<SelectListItem> personnelAreas = new List<SelectListItem>();
            personnelAreas.Add(new SelectListItem { Value = "", Text = "" });
            foreach (PersonnelArea pa in PersonnelArea.GetAllPersonnelAreas())
            {
                personnelAreas.Add(new SelectListItem { Value = pa.AreaID.ToString(), Text = pa.AreaTitle });
            }
            return personnelAreas;
        }
        private set { }
    }
        public static List<SelectListItem> ApprovingAuthorities
    {
        get
        {
            List<SelectListItem> returned = new List<SelectListItem>();
            returned.Add(new SelectListItem { Text = "", Value = "" });
            foreach (Employee item in Employee.GetAllEmployees().Where(e => e.UserRoleID == 2 || e.UserRoleID == 5))
            {
                returned.Add(new SelectListItem { Text = string.Format("{0} {1}", item.FirstName, item.LastName), Value = item.ID.ToString() });
            }
            return returned;
        }
        private set { }
    }

我需要批准机构选择列表仅显示适用于人员区域的那些。

"最佳"方法可能是一个意见问题,但一个好方法是使用 AJAX 填充第二个下拉列表。

第一个下拉列表可以用静态数据填充,而第二个下拉列表可以通过生成填充第二个下拉列表的客户端 JavaScript 代码来填充第二个下拉列表,或者通过对返回 JSON 的控制器方法执行 AJAX 调用,然后用该数据填充第二个下拉列表。

这里有一篇很好的文章:http://www.sidecreative.com/Blog/Entry/Cascading-dropdown-lists-with-MVC4-and-jQuery 的"使用MVC 4和jQuery的级联下拉列表"。

祝你好运!

还可以使用 SignalR 填充第二个组合框。你可以在这里按照一个好的教程

最新更新