Asp.net mvc 4 在第二个下拉列表中显示未定义结果的计算下拉列表

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,

我的计算下拉列表在第二个下拉列表中显示未定义的结果。 这是我添加2下拉列表的视图。基本上,我希望当我从branch下拉列表中选择branch时,相关的类必须显示在class下拉列表中

@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+;};那是因为您仍在使用原始控制器中的糟糕而毫无意义的代码,而不是我显示的正确代码。