我正在尝试根据另一个下拉列表的选择动态填充下拉列表。我在我的开发环境中工作,但是当我在一个实例中将它提升到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);
}
});
});
答案 0 :(得分:0)
我能够解决这个问题。在请求URL中,它缺少一条信息。出于某种原因,在“创建”视图中,它将转到正确的URL,但“编辑”视图不是。我必须明确告诉它去哪里。一旦我添加了缺失的信息,它按预期工作,
以前我有url: "/Device/GetModelsByManufacturerID",
我通过将其修改为url: "/RMS_SMM/Device/GetModelsByManufacturerID",
来解决问题。
感谢所有提出建议的人。