Olá pessoal!!
Estou tentando fazer o seguinte: filtrar a informação de uma listbox de localidades dependendo do que o usuário informar em um dropdownlist de municípios. Eu segui o passo-a-passo do seguinte site (porém no meu caso são apenas um dropdown e um listbox, e
não três):
Simple Implementation os MVC Cascading
Meu código ficou assim:
- Criei um actionResult no meu Controller.
[HttpPost]
public ActionResult SelectMunicipio(int? selectedMUNICIPIO, SINCO_LOCALIDADE_CONCESSAO sinco_localidade_concessao, SINCO_CONCESSAO sinco_concessao)
{
ViewBag.IDMUNICIPIO = new SelectList(db.MUNICIPIOS_VIEW, "ID_MUNICIPIO", "NOME_MUNICIPIO", sinco_concessao.IDMUNICIPIO);
ViewBag.IDLOCALIDADE = new SelectList(db.LOCALIDADES_VIEW, "ID_LOCALIDADE", "NOME_LOCALIDADE", sinco_localidade_concessao.IDLOCALIDADE);
if (selectedMUNICIPIO.HasValue)
{
ViewBag.IDLOCALIDADE = (from s in db.LOCALIDADES_VIEW
where s.ID_MUNICIPIO == selectedMUNICIPIO
orderby s.NOME_LOCALIDADE
select s);
}
return PartialView("LocalidadesList", sinco_concessao);
}
- Criei duas partial Views, uma para o Munícipio e outra para Localidades.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SINCO_MVC.Models.SINCO_CONCESSAO>" %>
<script type="text/javascript">
$(function () {
$("#selectedMUNICIPIO").change(function () {
$(this).parents('form').submit();
});
});
</script>
<div class="editor-label">
<%: Html.LabelFor(model => model.IDMUNICIPIO) %>
</div>
<div class="editor-field">
<% using (Ajax.BeginForm("SelectMunicipio", "ConcessaoController", new AjaxOptions { UpdateTargetId = "Localidades"}))
{ %>
<%: Html.DropDownList("IDMUNICIPIO", String.Empty) %>
</div>
<%
}
Scripts.Render("~/bundles/jqueryval");
%>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SINCO_MVC.Models.SINCO_CONCESSAO>" %>
<div class="editor-label" style="font-weight: bold">
Localidades:
</div>
<div class="editor-field">
<%: Html.ListBox("IDLOCALIDADE", null, new { id = "IDLOCALIDADE", size = "10" })%>
</div>
<%
Scripts.Render("~/bundles/jqueryval");
%>
- Chamada das Parital Views.
<div class="editor-field" id="Municipios">
<%: Html.Partial("MunicipioList", Model)%>
</div>
<div class="editor-field" id="Localidades">
<%: Html.Partial("LocalidadesList", Model)%>
</div>
- Adicionei esses scripts ao site.master.
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery-1.5.1.min.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js") %>"></script>
- Adicionei ao web.config.
<appSettings>
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
O problema que ocorre é que quando eu seleciono o município no dropdownlist, o sistema não está reconhecendo a mudança de index, então não chama a action, consequentemente, não faz nada. Para mim está tudo certo, não estou conseguindo enxergar aonde está
o erro. Vocês poderiam me ajudar?