如何解决不工作的级联下拉

Posted

技术标签:

【中文标题】如何解决不工作的级联下拉【英文标题】:How to resolve a not working cascading drop down 【发布时间】:2021-09-04 18:59:19 【问题描述】:

我有一个级联下拉列表,例如第一个下拉列表显示国家列表,并根据国家/地区的选择填充下一个下拉列表。问题是在开发环境中它工作正常,但是当部署在服务器中时,第一个下拉列表会正确填充,因为它的元素来自资源文件,并且在选择第一个下拉列表后出现错误。

JS:

<script>
    $(document).ready(function () 

        $("#Site").change(function () 
            var SelectedVal = $(this).val();
            $("#Model").html('');
            $("#Model").append($("<option></option>").attr("value", '')
                .text(' '));
            if (SelectedVal != '') 

                $.get("/Home/GetModelList",  Sid: $("#Site").val() , function (data) 
                    $("#Model").empty();
                    $("#Model").html('');
                    $("#Model").append($("<option></option>").attr("value", '')
                        .text('  '));
                    if (data.modelAlert != null) 
                        alert(data.projectAlert);
                    
                    $.each(data.models, function (index, item) 
                        $("#Model").append($('<option></option>').text(item));
                    );
                );
            
        )
    );
</script>

控制器:

public JsonResult GetModelList()

        List<string> models = db.GetModels();
        string modelAlert = alert.GetAlert();
        var result = new  modelAlert, models ;
        return Json(result, JsonRequestBehavior.AllowGet);

我得到的错误信息是

加载资源失败:服务器响应状态为 404 (Not Found) Home/GetModelList?Sid=Ind:1

我检查了类似的问题,如this,都是关于 JS 路径或控制器路径的,但我已经给出了绝对路径。谁能让我知道我哪里出错了,如果需要任何其他数据,请告诉我。

谢谢

【问题讨论】:

只是一个我觉得奇怪的东西:如果你的控制器方法不支持,你为什么要使用查询参数 (sid)?除此之外,它很可能是路由问题。 尝试添加 /Home/GetModelList 的完整 URL(不是绝对路径) @DominikSand 我删除了查询参数,我之前使用过它,但后来在控制器中做了一些更改,但后来忘记从 JS 中删除它。无论如何,感谢您的强调,是的,这是一个路由问题。 【参考方案1】:
$.get("/Home/GetModelList",  Sid: $("#Site").val() , function (data) 

上面这行导致路由问题,通常当我们以这种方式从js调用控制器动作时,由于文件夹结构引用,往往会出现路由问题。为了避免这种路由问题并且更清楚,我们还可以从 js 中调用控制器操作,如下所示

$.get('@Url.Action("MethodName", "ControllerName")', function (data) 

这解决了我的问题。

【讨论】:

以上是关于如何解决不工作的级联下拉的主要内容,如果未能解决你的问题,请参考以下文章

如何在不加载视图的情况下重新加载/刷新部分视图中的级联下拉列表

SQLite中使用CTE巧解多级分类的级联查询

SQLite中使用CTE巧解多级分类的级联查询

js基于json的级联下拉框

使用 JSON 结果填充下拉列表 - 使用 MVC3、JQuery、Ajax、JSON 的级联下拉

Power Apps中的级联下拉列表