none
Parametros via jquery load para controller RRS feed

  • Pergunta

  • Boa tarde, aqui estou eu de novo, apanhando feito cachorro, pra fazer algo que parece bem simples, "tão simples que nem consigo resolver" , Estou precisando passar um parmetro através do metodo load() do Jquery, mas infelizmente, sem sucesso.....Já percorri diversos sites a procura de uma solução, entretanto das várias encontradas, nenhuma ficou funcional em meu projeto, então recorro a vocês.

    Na minha view, defini um javascript desta forma:

     <p>Operadoras: <select id="selectOperator" onchange="teste()">
                           <option id="00000000-0000-0000-0000-000000000000"></option>
                           @foreach (var operadora in ViewBag.Operadoras)
                           {
                               <option id="@operadora.OperatorId" value="@operadora.OperatorId">@operadora.Name</option>
                           }
                       </select></p>
    
    
    
    
    <script type="text/javascript">
        function teste() {
          
            ids = $("#selectOperator :selected").attr('id');
            $('#funcionario').load("/Funcionario/GetOperadora/", { param1: ids });
        }
             
    </script>

    ja tentei fazer assim:

    $('#funcionario').load("/Funcionario/GetOperadora/", + ids );

     Assim:

    $('#funcionario').load("/Funcionario/GetOperadora", ids );

    Ja tentei criar uma rota, desta forma:

    routes.MapRoute(
                    "Funcionario", // Route name
                    "{Funcionario}/{GetOperadora}/{id}", // URL with parameters
                    new { controller = "Funcionario", action = "GetOperadora", id = " " } // Parameter defaults
                );

    mas de todas as formas, não consigo receber o dado no meu controller, que por sua vez esta definido desta forma:

    public ActionResult GetOperadora(String guid)
            {
              
                var id = new Guid(guid);
                var funcionarios = db.ListarEmployees(branchid, periodid, id);
    
                ViewBag.Func = funcionarios;
    
                return PartialView("_Operadoras");
            }

    Agradeço pela atenção.

    quinta-feira, 31 de janeiro de 2013 17:10

Respostas

Todas as Respostas

  • Mas vc não esta colocando para chamar a função no body do seu Layout?

    Exemplo

    <body onload="Teste();">



    Paulo Marcelo Dalbosco



    quinta-feira, 31 de janeiro de 2013 17:33
  • Desculpe Paulo, a chamada a que se refere é ao js? Pois se for, chamo o metodo teste() no evento onclick() do select.....Marcando Brakpoints, consegui ver que a chamada ao controller acontece, entretanto o parametro é que nao vem.

    Desculpe minha ignorância, mas porque eu teria de ter esta chamada no meu body, sendo que o evento só deve ocorrer quando o usuario alterar o select?

    Grato pela atenção.


    • Editado Fabio.Junio quinta-feira, 31 de janeiro de 2013 18:04
    quinta-feira, 31 de janeiro de 2013 17:36
  • Tenta:

     function teste() 
    {      
            ids = $("#selectOperator :selected").attr('id');
            var url = this.href;
            $('#funcionario').load(url, { param1: ids });
        }

    quinta-feira, 31 de janeiro de 2013 17:52
  • Infelizmente não funcionou amigo, é como eu disse, quando faço o Debug, consigo entrar no método certinho, só que o parâmetro é que não esta indo. O parâmetro não chega no método.
    quinta-feira, 31 de janeiro de 2013 18:01
  • Vc tem que declarar o parametro aqui

    public ActionResult GetOperadora(String guid, Parametro As String)


    Paulo Marcelo Dalbosco

    quinta-feira, 31 de janeiro de 2013 18:04
  • Paulo, desculpe, mas quando declaro "Parametro As String", parmetro fica em vermelho, e o intelicense me pede para criar overload, method, etc....

    Mas me esclarece uma coisa, quando crio a assinatura do metodo, 

    public ActionResult GetOperadora(String id)

    a string id já não é o parametro?

    quinta-feira, 31 de janeiro de 2013 18:22
  • Desculpa cara, eu escrevi em VB ali! hahahaha

    Mas é isso, tem que declarar ele na Action.

    Eu não conheço esse método do JQuery, quando faço algo do genero monto uma lista e mando com Json.


    Paulo Marcelo Dalbosco


    quinta-feira, 31 de janeiro de 2013 18:44
  • Pois é, tinha feito isso, retornava em json e montava a view através do javascript, mas percebi que a manutenbilidade do código ficaria confusa, e com isso percebi que retornar uma partialView desta forma seria mais viável, visto que posso trazer todos os dados do controller através das ViewBags....

    Estou pesquisando aqui como fazer essa anotação sugerida por vc em c#, mas ainda sem sucesso.

    Mas de qualquer forma, te agradeço pela atenção.

    quinta-feira, 31 de janeiro de 2013 18:55
  • Amigo tente isso 

    $('#funcionario').load("/Funcionario/GetOperadora/" + ids );

    e corra pro abraço!


    quinta-feira, 31 de janeiro de 2013 19:19
  • Caraca Amigo Felipe.....muito Obrigado pela sua ajuda.......impressionante como uma vírgula muda todo o contexto né.....

    Valew....

    quinta-feira, 31 de janeiro de 2013 19:21