如何解决无法工作的级联下拉列表



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

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(未找到(Home/GetModelList?Sid=Ind:1

我检查了类似的问题,都是关于JS路径或控制器路径的,但我已经给出了绝对路径。有人能告诉我哪里出了问题吗?如果需要任何额外的数据,请告诉我。

感谢

$.get("/Home/GetModelList", { Sid: $("#Site").val() }, function (data) {

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

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

这解决了我的问题。

最新更新