使用Jquery和Ajax填充下拉列表

时间:2017-06-14 15:31:56

标签: jquery ajax cascadingdropdown

我正在尝试根据另一个下拉列表的选择动态填充下拉列表。我在我的开发环境中工作,但是当我在一个实例中将它提升到IIS服务器时它不起作用。我在两个地方使用相同的代码创建和编辑。当您第一次进入屏幕时,它会加载制造商下拉菜单,然后根据您选择的内容,它将加载模型下拉列表。这适用于Create但不适用于Edit。使用编辑我有一个额外的功能,我将初始值传递给下拉列表。然而,当我选择新的制造商时,我会在尝试加载模型下拉列表时收到错误。在我调试时的响应标头中,我按预期得到Content-Type: text/html而不是:json。我觉得它与我如何传递这个初始值有关,因为我不知道它在IIS服务器上是什么,因为它在一个区域而不是另一个区域工作。

我的控制器的GET编辑

PopulateModel(manufacturer.ManufacturerID, manModel.Model);

private void PopulateModel(int? manufacturerID, object selectModel = null)
    {
        var model = db.ManufacturerModels
            .Where(x => x.ManufacturerID == manufacturerID)
            .OrderBy(x => x.Model);

        ViewBag.dropdownModel = new SelectList(model, "Model", "Model", selectModel);
    }

查看编辑 -

@Html.DropDownList("dropdownModel", null, htmlAttributes: new { @class = "form-control" })

$('#dropdownManufacturer').change(function () {
            $('#dropdownModel').empty();

            $.ajax({
                type: "POST",
                url: "/Device/GetModelsByManufacturerID",
                datatype: "Json",
                data: { manufacturerID: $('#dropdownManufacturer').val() },
                success: function (data) {

                    $.each(data, function (index, value) {
                        $('#dropdownModel').append('<option value="' + value + '">' +
                            value + '</option>');
                    });
                },
                error: function (error) {
                    alert("Error Ajax not working: " + error);
                }
            });
        });

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题。在请求URL中,它缺少一条信息。出于某种原因,在“创建”视图中,它将转到正确的URL,但“编辑”视图不是。我必须明确告诉它去哪里。一旦我添加了缺失的信息,它按预期工作,

以前我有url: "/Device/GetModelsByManufacturerID", 我通过将其修改为url: "/RMS_SMM/Device/GetModelsByManufacturerID",来解决问题。

感谢所有提出建议的人。