【问题标题】:MVC DropDownList Select Populates ListBox (Both Selects)MVC DropDownList Select 填充 ListBox(两个选择)
【发布时间】:2014-10-14 16:49:36
【问题描述】:

我有一个 MVC 视图,它有一个带有 IEnumerable<SelectListItem> 的模型,它填充了一个 @Html.DropDownList(表单选择)。 我想编写代码,以便在选择下拉列表中的项目时,它将使用来自服务器的值填充另一个列表框(也是表单选择)。

我是否应该使用 AJAX 来获得一个单独的部分视图,其中包含列表框以及每次单击下拉列表时的值?或者我应该在加载时生成一个列表框,然后使用 WebAPI 来获取每次点击的数据?

这似乎是一个简单的问题,但我正在尝试找出我的模型和视图以及最佳方法。

【问题讨论】:

  • 我会接受你的第一个建议
  • @MattBodily 任何具体原因,一种或另一种方式?我感谢 cmets。
  • 局部视图将是您设置它的最简单方法。您也可以每次手动将数据加载到列表框中。谷歌搜索依赖下拉菜单将为您提供该方法的几个示例。设置起来需要更多的工作
  • 对于这种级联情况,在更改父元素时使用 ajax 调用,我建议始终保持轻量级响应。因此,使用 Json Result 作为响应(在前端使用 JavaScript/jQuery 构造选项并将它们设置为 DropDownList),而不是在第一个列表选项项的 onchange 时使用 PartialView Result
  • @VenkataPanga 所以您还建议创建一个空列表框,然后使用 AJAX 调用填充它?

标签: c# asp.net asp.net-mvc asp.net-mvc-4 listbox


【解决方案1】:
  1. 填充您的下拉列表
  2. 创建一个空列表框。
  3. 有一个在下拉列表更改事件时触发的 javascript 函数,并对返回 json 结果的操作方法进行 ajax 调用。
  4. 成功绑定json数据到列表框。

【讨论】:

  • 归根结底就是这样。我是使用带有 Json 数据 AJAX 调用的空列表框还是使用带有 AJAX 的部分视图 HTML 返回?我知道 JSON 更适合数据大小,但创建一个空列表是否被认为是好的设计?
  • @Isa Fram 如果您使用局部视图创建列表框,那么每次更改下拉列表时您都会创建控件,因为加载列表框比这简单得多。如果您觉得空列表框很烦人,为什么不在页面加载时将其禁用并在下拉值更改时启用它,这将告诉用户该列表框是级联的。
【解决方案2】:

我宁愿使用 Ajax,因为其他下拉列表取决于您的第一个下拉列表。

在你的控制器中,只需要一个 JsonResult,如下所示:

public JSonResult getDropdownItems(your parameters)
{
    //do some iteration in your context

    return Json( /*list or iEnumerable*/, Json.AllowGet);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多