ASP.Net MVC2中的级联下拉列表

时间:2010-12-15 05:23:07

标签: jquery json asp.net-mvc-2

我在c#ASP.Net上使用mvc2。我试图实现级联下拉列表,其中我的第一个下拉列表被命名为组,而我的第二个下拉列表是除法。所以在选择组时,它的各个部门将显示在我的第二个下拉列表中..

这是我试图实现的代码

这是我的观点部分。

<%= Html.DropDownList("ddlGroup", IEnumerable<SelectListItem>)ViewData["ddlGroup"])%>
<select id="ddlDivision" name="Division"></select>

,脚本部分是

$(document).ready(function () {
  $("#ddlGroup").change(function () {   // group drop down selected index change       
    LoadDivision($("#ddlGroup").val());          
  }).change(); // For 1st data in on load
});

function LoadDivision (Group) {     
  var url = "../Training/GetJsonDivision";
  $.getJSON(url, { Group: Group }, function (data) {        
    $.each(data, function (index, optionData) {                 
      $("#ddlDivision").append("<option value'" + optionData.Division + "'>" + optionData.Division + "</option">);
    });
  });
}

我的控制器部分是

public ActionResult GetJsonDivision(string Group)
{        
    SelectList division = new SelectList(GetDivision(Group), "Division", "Division");
    return this.Json(division, JsonRequestBehavior.AllowGet);
}

这里我的GetJsonDivision返回给定组的除法集。 在我的jquery中,在getJSON函数调用中,它进入控制器并且方法被执行但是在每个语句之后,我无法将数据绑定到下拉列表。

任何人都可以帮助我解决这个问题。我不清楚我们在回调函数参数中给出的optionData是什么,以及它是如何映射到返回值的。

谢谢和问候 Malathy。

1 个答案:

答案 0 :(得分:0)

当你直接插入文本时,我不相信你真正添加了一个新元素。例如,尝试这样的事情:

$(data).each(function()
{
     var option = $('<option />');
     option.val(this.Division).text(this.Division);
     $('#ddlDivision').append(option);
});

试一下,看看它是否有效。