使用asp.net mvc级联下拉列表

我有一个交易类型的下拉列表,在选择时应填充交易者的下拉列表。 我的观点如下:

`
  • <%-- <option value=""> --%> Select a Trader type from here
  • Select a Trader from here
`

我尝试使用JQuery,但我无法获得’TraderType’下拉列表的更改事件。 我的脚本是:

 $("TraderType").change(function() { alert("Change"); $.ajax({ url: $("#ListTraders").attr("action"), type: 'GET', contentType: "application/json; charset=utf-8", cache: false, data: { part: $("#TraderType").val() }, dataType: 'json', async: false, success: function(data) { if ((data.lstTraders.length) > 0) { for (var count = 0; count < data.lstTraders.length; count++) { $("#Trader").append("" + data.lstTraders[count].TraderName + ""); } } } }); }); 

控制器中的代码是:

 public JsonResult ListTraders(string trdrTypeId) { IList lstTraders = new List(); Build objBld = new Build(); Document objDoc = new Document(); string message = string.Empty; bool result = true; try { int trdrType = Convert.ToInt32(trdrTypeId); lstTraders = objBld.GetTradersByTrdrTypeId(trdrType); } catch (Exception ex) { message = ex.Message; result = false; } return Json(new { Success = result, Message = message, lstTraders = lstTraders });} 

请帮帮我。

 $("#TraderType").change(function() { }); 

你错过了#对于控制器中的动作,尝试在POST中更改VERB

  $.ajax({ url: $("#ListTraders").attr("action"), type: 'POST', 

像这样改变你的控制器:

 [HttpPost] public JsonResult ListTraders(string trdrTypeId) 

…当你返回JSON时,你应该改变这个:

 return Json(new { Success = result, Message = message, lstTraders = lstTraders }, JsonRequestBehavior.DenyGet); 

另外,这个参数必须匹配

 data: { trdrTypeId: $("#TraderType").val() }, public JsonResult ListTraders(string trdrTypeId) 

我建议你在这里使用控件;

http://awesome.codeplex.com/

演示: http : //demo.aspnetawesome.com/AjaxDropdownDemo

Ajax Dropdown控件可以轻松用于级联下拉列表。

此外,这里还有许多其他有用的控件。

是不是jQuery语法错了? 尝试在元素的ID之前添加哈希:

 $("#TraderType").change(function... 

suja,

确保您的交易者点击在直播活动内(以及在文件准备活动内),即:

  

希望这可以帮助..

@Suja:这就是我所做的,它的确有效。 我也删除了这一行=> contentType:“application / json; charset = utf-8”,

HTML

 
  • <%=Html.DropDownList("TraderType", (SelectList)ViewData["TraderType"])%> Select a Trader type from here
  • Select a Trader from here

Javascript

  

C#

 [HttpPost] public JsonResult ListTraders(string trdrTypeId) { return (Json(true, JsonRequestBehavior.DenyGet)); } 

1。

  <%:Html.DropDownList("SubDepartment", (SelectList)ViewData["SelectListSubDepartment"], new { id = "SubDepartment", @class = "combobox" })%> 

提供默认列表(如果有)。

2.创建一个javascript函数

   

3.现在提供Controller操作方法的列表。

 public JsonResult IndexChk(string selectedvalue = null) { List departmentList = new List() { new Sbu { Id = 1, Name="SubPublishing"}, new Sbu { Id = 2, Name="SubSoftware"}, new Sbu { Id = 3, Name="SubEngineering"}, new Sbu { Id = 4, Name="SubShipping"}, new Sbu { Id = 5, Name="SubTranscription"} }; var selectList = new SelectList(departmentList, "id", "name", selectedvalue); return Json(selectList, JsonRequestBehavior.AllowGet); } 

就是这样,现在调用在onclick,onchange上的任何事件上创建了javascript函数。