Javascript MVC根据以前的下拉列表过滤下拉列表,重用代码

Javascript MVC根据以前的下拉列表过滤下拉列表,重用代码,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我是MVC新手,正在将现有WPF应用程序转换为MVC网站。我们在应用程序多阶段下拉选择中使用的一个常见函数。我的意思是: 下拉列表A是数据库中的列表 选择A后,将基于该选择填充下拉列表B 选择B后,将基于该选择填充下拉列表C 在WPF中,我可以创建一个自定义控件,使它可以轻松地将它放到我需要的任何地方,但我不确定MVC局部视图是否能提供我所需要的功能,因为它似乎是这样或那样。我想对控制器进行ajax调用,以便在选择每个下拉列表时加载数据,这需要javascript 我反复考虑的一个想法是,使

我是MVC新手,正在将现有WPF应用程序转换为MVC网站。我们在应用程序多阶段下拉选择中使用的一个常见函数。我的意思是:

  • 下拉列表A是数据库中的列表
  • 选择A后,将基于该选择填充下拉列表B
  • 选择B后,将基于该选择填充下拉列表C
在WPF中,我可以创建一个自定义控件,使它可以轻松地将它放到我需要的任何地方,但我不确定MVC局部视图是否能提供我所需要的功能,因为它似乎是这样或那样。我想对控制器进行ajax调用,以便在选择每个下拉列表时加载数据,这需要javascript

我反复考虑的一个想法是,使用一个局部视图,以模型加载下拉列表a,然后执行
@Scripts.Render('multiDropdown.js'
,就在
partial()下面)
。我不喜欢这个想法,因为我现在必须确保我还包括脚本,而不是仅仅渲染部分。我也不喜欢这个想法,因为如果有某种方法可以将javascript放入部分,我还可以提供
ViewData
来提供javascript中使用的下拉列表ID名称,这样我就可以有更多的脚本n同一页面上的一个部分。如果javascript保持独立,我必须硬编码部分和javascript中元素的ID

我的另一个想法是使用
@Ajax
助手尝试在“不使用”javascript的情况下加载它们,但由于部分视图中的javascript限制,我不确定
@Ajax
方法是否也能在部分视图中正常工作


我还可以使用其他技术来解决这个问题吗?这种过滤似乎是一种常见的功能,但我找不到任何有助于我实现它的资源,尤其是以可重用的方式。你需要搜索层叠下拉列表有大量的示例如何做到这一点。你还需要使用AJAX完成此操作。我将向您展示我的AJAX,让您朝着正确的方向前进。在这个AJAX调用的success函数中,我正在清除
下拉列表B的先前内容,并重新填充服务器返回的内容

               $.ajax({
                    url: "/Home/GetDivisions", //will return JsonResult
                    type: "GET",
                    data: { leagueId: value },
                    success: function (data) {

                        var ddlDivision = $('#ddlDivision'); 
                        ddlDivision.html(''); //clear previous contents.

                        $.each(data, function (index, item) {

                         ddlDivision.append($('<option></option>')
                        .val(item.Value)
                        .html(item.Text));
                        });
                     },
$.ajax({
url:“/Home/GetDivisions”,//将返回JsonResult
键入:“获取”,
数据:{leagueId:value},
成功:功能(数据){
变量ddlsdivision=$(“#ddlsdivision”);
ddlddivision.html(“”);//清除以前的内容。
$。每个(数据、功能(索引、项目){
ddlddivision.append($('')
.val(项目值)
.html(item.Text));
});
},

你可以很确定地将JS放在部分视图中,我认为这样做很好。只要记住你渲染该部分视图的位置,这样在渲染两次时就不会遇到脚本错误。我在尝试这样做时遇到了问题,主要是因为它在部分视图中找不到jQuery。我必须做一些实验来找到w这里的限制是我试图通过模型绑定来实现这一点,但由于我真正需要发送的只是一个ID,并返回一个
文本的列表
,我认为使用
JsonResult
来实现这一点更有意义。现在我想尝试并找到一种方法,可以将其标准化,以便在e应用程序。谢谢!我发现的所有引用都使用了
JSON
,并以类似的方式处理。我很想通过模型绑定实现这一点,但由于它是AJAX,我不确定这是否可行。我不知道如何触发下拉菜单“重新绑定”