级联下拉列表不适用于Jquery

时间:2014-12-17 13:43:03

标签: c# jquery asp.net-mvc

我必须做一个下拉列表和一个列表框。当我在下拉列表中选择一个值时,列表框必须更改。我试图用Jquery做这个,因为我使用的是MVC。但是当我在第一个下拉列表中选择ID时,没有任何反应。我的代码:

查看(Jquery):

<script type="text/javascript">

    $(document).ready(function () {
        $('#IDCONCESSAO').change(function () {
            $.ajax({
                url: '/Localidades/LocalidadesMunicipio',
                type: 'POST',
                data: { ConcessaoId: $(this).val() },
                datatype: 'json',
                success: function (data) {
                    var options = '';
                    $.each(data, function () {
                        options += '<option value="' + this.IdLocalidade + '">' + this.NomeLocalidades + '</option>';
                    });
                    $('#IDLOCALIDADE').prop('disabled', false).html(options);
                }
            });
        });
    });

            </script>

下拉列表和列表框部分:

     <%:   Html.DropDownListFor(model => model.SINCO_CONCESSAO,  new SelectList(ViewBag.IDCONCESSAO, "Id", "Nome"), new { @class = "select", style = "width: 250px;" }) %>
    </div>
       <div class="editor-label" style="font-weight: bold">
       Localidades:
    </div>
      <div class="editor-field" id="Localidades">
       <%: Html.ListBoxFor(m => m.SelectedItemIds, Model.ItemChoices, new { id = "IDLOCALIDADE", size = "10" })%>
 </div>

执行级联的操作:

   [HttpPost]
    public ActionResult LocalidadesMunicipio(int ConcessaoID)
    {
        var Localidades = (from s in db.LOCALIDADES_VIEW
                           join c in db.SINCO_CONCESSAO.ToList() on s.ID_MUNICIPIO                          equals c.IDMUNICIPIO
                      where c.IDCONCESSAO == ConcessaoID
                      select new
                      {
                          idLocalidade = s.ID_LOCALIDADE,
                          NomeLocalidades = s.NOME_LOCALIDADE
                      }).ToArray();

        return Json(Localidades);
    }

控制器:

       [Authorize(Roles = "ADMINISTRADOR")]
    public ActionResult Create(SINCO_LOCALIDADE_CONCESSAO model)
    {
 //Here I populate my dropdownlist
        ViewBag.IDCONCESSAO = from p in db.SINCO_CONCESSAO.ToList()
                              join c in db.MUNICIPIOS_VIEW.ToList() on p.IDMUNICIPIO equals c.ID_MUNICIPIO
                              join d in db.SINCO_TIPO_CONCESSAO.ToList() on p.IDTIPOCONCESSAO equals d.IDTIPOCONCESSAO
                              select new
                              {
                                  Id = p.IDCONCESSAO,
                                  Nome = p.IDCONCESSAO + " - " + c.NOME_MUNICIPIO + " - " + d.DSTIPOCONCESSAO
                              };

 //Here I populate my listbox           
        PopulateItemLocalidades(model);
        return View(model);
    }

我无法看到T_T出了什么问题 我缺少什么?

1 个答案:

答案 0 :(得分:0)

第一个下拉列表最有可能是ID SINCO_CONCESSAO,其名称是为其创建的属性。你指的是你脚本中不同的东西。

要解决此问题,请在jQuery中指定其他ID:

$('#SINCO_CONCESSAO').ajax ...

或在视图中为下拉列表设置ID:

 <%: Html.DropDownListFor(model => model.SINCO_CONCESSAO,  ...
     , new { id = "IDCONCESSAO" ... }) %>