Javascript 级联下拉列表在mvc中返回未定义
我知道这个问题在这里还有很多其他问题。但这是我对这件事的看法 homecontroller中的我的Json调用:Javascript 级联下拉列表在mvc中返回未定义,javascript,c#,jquery,model-view-controller,drop-down-menu,Javascript,C#,Jquery,Model View Controller,Drop Down Menu,我知道这个问题在这里还有很多其他问题。但这是我对这件事的看法 homecontroller中的我的Json调用: public JsonResult GetBrand(int-id) { List resultdata=新列表(); //通过sql查询获取一些数据 使用(SqlCommand=newsqlcommand(查询,sqlconn)) { 使用(SqlDataReader=command.ExecuteReader()) { while(reader.Read()) { resultd
public JsonResult GetBrand(int-id)
{
List resultdata=新列表();
//通过sql查询获取一些数据
使用(SqlCommand=newsqlcommand(查询,sqlconn))
{
使用(SqlDataReader=command.ExecuteReader())
{
while(reader.Read())
{
resultdata.Add(reader.GetString(0));
}
}
}
返回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" })
还有我的剧本:
$(文档).ready(函数(){
$(“#类别”)。更改(功能(){
$.get(“GetBrand”,{id:$(“#category”).val()},函数(数据){
控制台日志(数据);
$(“品牌”).empty();
$.each(数据、函数(索引、行){
控制台日志(行);
$(“#品牌”)。追加(“+row.material_name+”)
});
});
})
});
在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()
});
}
现在,它返回值。这是我对任何人的修复,也缺少一些非常简单的东西:
while (reader.Read())
{
items.Add(new SelectListItem
{
Value = Convert.ToString(Convert.ToInt32(reader["div_id"])),
Text = reader["material_name"].ToString()
});
}
现在它返回值。当您在控制台上打印
行时,您得到了什么值?我得到了品牌名称,例如:品牌1、品牌2等。它在下拉列表上的显示方式正是如此。如果我在Json调用中这样做:返回Json(新的选择列表(resultdata,“div_id”,“material_name”)、JsonRequestBehavior.AllowGet;我得到一个错误:内部服务器错误(500),所以我认为我的Json调用是正确的,脚本或下拉列表本身有问题???在$中。get(“GetBrand”,…)
您需要这样写:$。get(“/Home/GetBrand”,…)
。它没有获取控制器操作方法的路径,因此存在错误。此外,路径区分大小写。因此,请确保您在创建控制器时准确地写入控制器名称。当您在控制台上打印行
时,您会得到什么值?我会得到品牌名称,例如:品牌1、品牌2等。它在下拉列表上的显示方式正是如此。如果我在Json调用中这样做:返回Json(新选择列表(resultdata,“div_id”、“material_name”)、JsonRequestBehavior.AllowGet);我得到一个错误:内部服务器错误(500),所以我认为我的Json调用是正确的,脚本或下拉菜单本身有问题???在$.get(“GetBrand”,…)
中,您需要这样写:$.get(“/Home/GetBrand”,…)
。它没有获取控制器操作方法的路径,因此出现错误。而且路径区分大小写。因此,请确保在创建控制器时,您所写的控制器名称与您给定的名称完全一致。