当用户在另一个DropDrownList中选择un选项时,更新ASP.NET MVC中的DropDrownList

时间:2009-01-06 19:39:54

标签: asp.net-mvc ajax

任何人都知道如何使用取决于用户选择的值来组合组合,我必须组合,国家和地区,当用户选择contry我需要去数据库并获取该国家的地区,任何人知道如果使用AJAX即可。如何做到这一点。

感谢。

3 个答案:

答案 0 :(得分:8)

您需要使用特定的Ajax库吗?

Ajax.Net Control Toolkit具有为此功能预先构建的Cascading Dropdown控件。


错过了MVC部分,在这种情况下,Ajax Control Toolkit将无法运行。 jQuery可能是最好的选择,因为它使Ajax非常容易编码,MS正式支持它与MVC框架一起使用。

如果您在站点上创建了RESTful服务(应该有大量关于如何执行此操作的文档),您可以通过jQuery返回json响应,如下所示:

标记:

<select id="opt1">
  <option value='1'>Option 1</option>
  <option value='2'>Option 2</option>
</select>

<select id="opt2" disabled></select>

假设服务将接受'id'作为参数并使用此模式返回json对象,例如:

[
  { name: 'option1', value: '1'},
  { name: 'option2', value: '2'}
]

您可以将此javascript添加到页面中:

$(function() {
  $('select#opt1').change(function(){
    $.getJSON('/data/myservice',{id: this.value},
      function(response) {
        var options = '';
        for (var i = 0; i < response.length; i++) {
          options += "<option value='" + response[i].value + "'>"
                  +  response[i].name + "</option>";
        }
        $('select#opt2').removeAttr('disabled').html(options);
      });
  });
});

快速解释那里发生的事情; jQuery代码可能有点像剥洋葱,所以我会一次拿它一个级别:

$(function(){})$(document).ready(function(){})的简写,因此它会在就绪事件触发时运行该函数。

$('select#opt1').change(function(){})找到名为'opt1'的<select>并在更改事件触发时运行该函数。

$.getJSON()为您调用Ajax。 JSON响应作为字符串返回,并且必须解析为JSON对象,$ .getJSON会自动为您执行这些操作。第一个字段是服务的url,第二个字段是转换为查询字符串的名称/值对,第三个字段是处理响应的回调函数。

答案 1 :(得分:1)

我建议使用jQuery和MVC的JsonResult来实现此功能。在模型中有一些东西可以根据给定的用户输入从db中获取新信息。 JsonResult会将此返回给视图,您将使用jQuery相应地填充下拉列表。

非常basic example using jQuery and the MVC framework's JsonResult可用here

答案 2 :(得分:0)

我也建议jQuery,如果你去异步获取数据,Json动作很有用。最终结果将是一个链式组合框设置,有很多关于如何在jQuery中执行此操作的示例,this one is fairly good with a live demo and the code.希望它对您有帮助。