Asp.net mvc 4 在第二个下拉列表中显示未定义结果的计算下拉列表
我的计算下拉列表在第二个下拉列表中显示未定义的结果。 这是我添加2下拉列表的视图。基本上,我希望当我从branch下拉列表中选择branch时,相关的类必须显示在class下拉列表中Asp.net mvc 4 在第二个下拉列表中显示未定义结果的计算下拉列表,asp.net-mvc-4,Asp.net Mvc 4,我的计算下拉列表在第二个下拉列表中显示未定义的结果。 这是我添加2下拉列表的视图。基本上,我希望当我从branch下拉列表中选择branch时,相关的类必须显示在class下拉列表中 @Html.DropDownListFor(m => m.BranchID, Model.BranchList, new { @class = "input-class",@id="bid" @Html.DropDownListFor(m => m.ClassID, Model.ClassLists,
@Html.DropDownListFor(m => m.BranchID, Model.BranchList, new { @class = "input-class",@id="bid"
@Html.DropDownListFor(m => m.ClassID, Model.ClassLists, new { @class = "input-class" ,@id="Cid"})
我在这里打电话
$("#bid").change(function () {
$("#Cid").empty();
$.ajax({
type: 'GET',
url: '@Url.Action("../AssignSubjToTeacher/GetClass/")',
dataType: 'json',
data: { id: $("#bid").val() },
success: function (classes) {
$.each(classes, function (i, class) {
$("#Cid").append('<option value="'+ class.Value'">'+class.Text + '</option>');
});
},
error: function (ex) {
alert('Failed to retrieve states.' + ex);
}
});
return false;
})
这是控制器代码
public JsonResult GetClass(Models.SubjAssignToTeacherModel DisplayRecord, string id)
{
List<ClassList> objAddclass = new List<ClassList>();
objAddclass = GetDropDownListclassGet(id);
SelectList objListOfclass = new SelectList(objAddclass, "ID", "Name",0);
DisplayRecord.ClassList = objAddclass;
return Json(DisplayRecord, JsonRequestBehavior.AllowGet);
}
下一行有一个错误:
$("#Cid").append('<option value="'+ class.Value'">'+class.Text + '</option>');
应该是:
$("#Cid").append('<option value="' + class.Value + '">' + class.Text + '</option>');
如果这不能解决“未定义”问题,那么返回的数据类是否与预期的一样
根据评论:
$.each(classes.ClassList, function (i, class) {
$("#Cid").append('<option value="'+ class.ID +'">'+ class.Name +'</option>');
});
将控制器方法更改为
public JsonResult GetClass(string id)
{
var data = GetDropDownListclassGet(id).Select(c => new { ID = c.ID, Name = c.Name });
return Json(data, JsonRequestBehavior.AllowGet);
}
然后在ajax成功函数中
success: function (classes) {
$.each(classes, function (i, class) {
$("#Cid").append('<option value="'+ class.ID'">'+class.Name + '</option>');
});
}
通过应用以下成功方法在控制台中进行检查:函数类{console.logclasses;当您选择first时,它将返回正确的数据。当我使用console.logclasses时;这是我在控制台对象中看到的{ID:1,BranchID:0,ClassID:0,SectionID:0,BranchName:null,ClassName:null,SectionName:null,BranchList:null,ClassList:Array[29],ClassList:null,还有2个…}Mackan not Resolved如果你想要一个选择列表,那不是你应该得到的。不过,你似乎在返回对象的ClassList数组中有select元素。然后你必须迭代classes.ClassList而不是classes。改为尝试@Stephens answer,因为不需要返回整个对象。显示not Resolved Reuter undefinedn在dropdwon now console.logclasses;中显示此类型错误:类为null对象{ID:2,BranchID:0,ClassID:0,SectionID:0,BranchName:null,ClassName:null,SectionName:null,BranchList:null,ClassList:Array[1],ClassList:null,还有2个…}显然,您没有在我的答案中使用代码,或者您声称无法检查控制器方法中的数据值。Mackan非常感谢您使用此答案$.eachClassList.ClassList,函数i,类{$Cid.append+class.Name+;};那是因为您仍在使用原始控制器中的糟糕而毫无意义的代码,而不是我显示的正确代码。