none
Problema ao carregar segundo dropdown com Json Asp MVC 4 RRS feed

  • Pergunta

  • o primeiro drop carrega, sem problemas, o segundo não...

    Usei esse como modelo, pra adaptar ao meu sistema: http://www.marcioalthmann.net/2012/01/de-webforms-para-mvc-dropdownlist-em-cascata/

    Controller Home:

    using System.Linq;
    using System.Web.Mvc;
    using SistemaQuestoes.Aplicacao;
    using SistemaQuestoes.Dominio;
    
    namespace SistemaQuestoes.UI.Web.Controllers
    {
        public class HomeController : Controller
        {
            public ActionResult Index()
            {
                var aplicacao = new DisciplinaAplicacao();
                var listaDisciplinas = aplicacao.ListarTodos();
                return View(new Disciplina.ClsDisciplina { Disciplinas = listaDisciplinas });
            }
            public JsonResult ObterAssuntosDisciplinas(int id)
            {
                var aplicacao = new AssuntoAplicacao();
                var assuntos = aplicacao.ListarPorId(id);
                return Json(assuntos.Where(l => l.DisciplinaId == id), JsonRequestBehavior.AllowGet);
            }
        }
    }
    

    View Home:

    @using SistemaQuestoes.Dominio
    
    @{
        ViewBag.Title = "Index";
    }
    
    <p>
        <select id="disciplina">
            <option value="0">Selecione...</option>
            @foreach (var disciplina in Model.Disciplinas)
            {
                <option value="@disciplina.DisciplinaId">@disciplina.NomeDisciplina</option>
            }
        </select>
    </p>
    
    <p>
    <select id="assunto"></select>
    </p>
    
    <script type="text/javascript" language="javascript">
        $(function () {
            $("#disciplina").change(function () {
                if (possuiAutorSelecionado()) {
                    carregarAssuntosDoAutor();
                } else {
                    limparAssuntosCarregados();
                }
            });
        });
        function possuiAutorSelecionado() {
            return $("#disciplina").val() != "0";
        }
        function carregarAssuntosDoAutor() {
            var url = "dropdown/obterassuntosdisciplinas/" + $("#DisciplinaId").val();
            $.getJSON(url, null, function (data) {
                limparAssuntosCarregados();
                $.each(data, function (indice, assuntos) {
                    $("#assunto").append("<option value='" + assuntos.AssuntoId + "'>" + assuntos.NomeAssunto + "</option>");
                });
            });
        }
    
        function limparAssuntosCarregados() {
            $("#assunto").empty();
        }
    </script>

    Aplicacao:

     public List<Assunto> ListarPorId(int id)
            {
                var strQuery = " ";
                strQuery += " SELECT ASSUNTO.ASSUNTOID,ASSUNTO.NOMEASSUNTO,DISCIPLINA.DISCIPLINAID,DISCIPLINA.NOMEDISCIPLINA ";
                strQuery += " FROM ASSUNTO,DISCIPLINA ";
                strQuery += " WHERE ASSUNTO.DISCIPLINAID=DISCIPLINA."+id;
                var retorno = contexto.ExecutaComandoComRetorno(strQuery);
                return TransformaReaderEmListaDeObjeto(retorno);
            }
    
            private List<Assunto> TransformaReaderEmListaDeObjeto(SqlDataReader reader)
            {
                var produtos = new List<Assunto>();
                while (reader.Read())
                {
                    var tempObjeto = new Assunto
                    {
                        AssuntoId = int.Parse(reader["ASSUNTOID"].ToString()),
                        NomeAssunto = reader["NOMEASSUNTO"].ToString(),
                        NomeDisciplina = reader["NOMEDISCIPLINA"].ToString(),
                        DisciplinaId = int.Parse(reader["DISCIPLINAID"].ToString())
                    };
                    produtos.Add(tempObjeto);
                }
                return produtos;
            }


    quinta-feira, 13 de fevereiro de 2014 12:46

Respostas

  •  var url = "dropdown/obterassuntosdisciplinas/" + $("#DisciplinaId").val();

    não ta errado o endereço o certo não seria

     var url = "/home/obterassuntosdisciplinas/" + $("#DisciplinaId").val();
    pelo menos se não to confundido o controller!!!


    Fulvio Cezar Canducci Dias

    quinta-feira, 13 de fevereiro de 2014 19:58