【发布时间】:2021-03-16 09:08:36
【问题描述】:
我知道这里的很多其他人都有这个问题。但这是我关于此事的问题。
我在 homecontroller 中的 Json 调用:
public JsonResult GetBrand(int id)
{
List<String> resultdata = new List<String>();
//get some data via sql query
using (SqlCommand command = new SqlCommand(query, sqlconn))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
resultdata.Add(reader.GetString(0));
}
}
}
return Json(resultdata, JsonRequestBehavior.AllowGet);
}
我的第二个下拉菜单的代码:
@Html.DropDownList("Brand", new SelectList(string.Empty, "", ""), "Please select", new { @class = "form-control" })
我也试过了:
@Html.DropDownList("Brand", new SelectList(string.Empty, "div_id ", "material_name "), "Please select", new { @class = "form-control" })
还有我的脚本:
$(document).ready(function () {
$("#category").change(function () {
$.get("GetBrand", { id: $("#category").val() }, function (data) {
console.log(data);
$("#Brand").empty();
$.each(data, function (index, row) {
console.log(row);
$("#Brand").append("<option value='" + row.div_id + "'>" + row.material_name + "</option>")
});
});
})
});
在 Chrome 的 F12 控制台上,我可以在下拉列表中看到我想要返回的实际数据列表,并且它是正确的(通过 console.log(row);)。 但是,在下拉列表本身中,它显示为未定义。
有人对我缺少的东西有什么建议吗?
【问题讨论】:
-
在控制台上打印
row时得到什么值? -
我得到了品牌名称,例如:品牌 1、品牌 2 等。它应该如何显示在下拉列表中。
-
如果我在 Json 调用中这样做: return Json(new SelectList(resultdata, "div_id", "material_name"), JsonRequestBehavior.AllowGet);我收到一个错误:内部服务器错误(500)
-
所以我认为我的 Json 调用是正确的,脚本或 Dropdown 本身有问题???
-
在
$.get("GetBrand", .... )你需要这样写:$.get("/Home/GetBrand" ,...)。它没有获取控制器操作方法的路径,因此出现错误。路径也区分大小写。因此,请确保您编写的控制器名称与您在创建控制器时给出的完全一致。
标签: javascript c# jquery model-view-controller drop-down-menu