级联下拉菜单在 mvc 中返回未定义
Cascading dropdowns are returning undefined in mvc
我知道这里有很多其他人有这个问题。但这是我关于此事的问题。
我的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);)。
但是,在下拉列表本身中,它显示未定义。
有人对我缺少的东西有什么建议吗?
这是我对还遗漏一些如此简单的东西的人的修复:
while (reader.Read())
{
items.Add(new SelectListItem
{
Value = Convert.ToString(Convert.ToInt32(reader["div_id"])),
Text = reader["material_name"].ToString()
});
}
现在它 returns 值。
我知道这里有很多其他人有这个问题。但这是我关于此事的问题。
我的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);)。 但是,在下拉列表本身中,它显示未定义。
有人对我缺少的东西有什么建议吗?
这是我对还遗漏一些如此简单的东西的人的修复:
while (reader.Read())
{
items.Add(new SelectListItem
{
Value = Convert.ToString(Convert.ToInt32(reader["div_id"])),
Text = reader["material_name"].ToString()
});
}
现在它 returns 值。