2011-05-26 168 views
3

我想写一个有两个下拉列表的MVC网页。第二个列表的内容取决于第一个选择的内容。MVC下拉列表绑定取决于另一个下拉列表的值

似乎没有一种使用内置MVC函数的方法,所以我将不得不推出我自己的。不过我不是让所有我需要的功能...这是最好的方式明确“是一样的web表单” :)

我创建的方式类似于this

然而下拉菜单我不确定如何开发这个功能,这样如果第一个列表中的第一个列表中有一个“selected”元素,它将在页面加载时自动绑定第二个列表。

编辑: 只是要清楚,我有能力将过滤的列表绑定到第二个下拉列表。但是,如果我的模型包含第一个下拉列表的选择,则选择设置正确,但第二个下拉列表不填充。

(我必须声明,我对新望MVC和Javascript是像一些陌生的语言给我吗?)

EDIT2: 我已经想过这个多一点。 很明显,我受到我开发webforms的强烈影响,并且我不太''获得'MVC。 我认为我确实有一些东西应该在我的模型中捕捉(即,如果我已经有了设置两个下拉列表的信息,那么我应该以某种方式在控制器中捕获该信息并建立下拉菜单,而不是尝试建立一个“ondatabound”类型的方法,并有观点称(这是我最初的意图)...现在我需要去研究如何做:)

回答

2

This是更好的实现,我发现之一。这个问题也被讨论过here

0

看到这个blog post创建级联下拉列表在asp.net mvc与可下载的源代码。

1

你任务包含3个子任务:

  1. 你应该使用选定的值
  2. 你应该处理得到的产品清单2的动作阿贾克斯得到改变第一DDL的选择项第二DDL的列表与第二DDL的定义的内容-nd你的控制器DDL和返回查看
  3. 你应该得到处理动作的结果更新第二DDL的内容

<script type="text/javascript">

 
    $(function(){ 
     $("form #ddl_1").change(function(){ 
      $.get({ // get request 
        url: "@Url.Action("MyController", "GetList"})" + "/" + $(this).val, 
        success: function(data){ // updating 
         $("form #ddl_2").html(data); 
        } 
     }) 
    }); 

</script>

“的GetList”行动应采取参数“ID”,如果你使用默认路由表(或你需要用定制路由表中创建特殊的记录),并返回局部视图(无主页)与您DDL2选项,这样的名单:

<option value="1">First</option> 
<option selected value="2">Second</option> 
<option value="3">Third</option> 
相关问题