none
Recuperar informações de Atributos na Controller RRS feed

  • Pergunta

  • Ola,

    Em uma view eu tenho um controle do tipo textbox, que possui alguns atributos e alguns desses atributos são ids, que eu gostaria de recuperá-los na Controller desta view para gravar informações no banco de dados.

    Só que eu não estou conseguindo achar uma forma recuperar essas informações na controller.

    Tem alguma forma de eu recuperar os atributos de um controle textbox (Html.TextBox) na minha controller?

    Agradeço desde já

    []'s
    Marcos


    marcos Fernandes
    sexta-feira, 26 de fevereiro de 2010 20:08

Respostas

  • Olá Marcos,

    Quando você submete um input somente os atributos name e value são enviados para o server name:value.
    A primeira impressão que tenho é que você pode resolver isso com hidden inputs! Mas se você quiser enviar qualquer outro atributo você deve fazer isso com AJAX, por exemplo para enviar o atributo title você pode fazer assim se utilizar JQuery

    function enviarTitle() {
        $.post("/Cliente/Teste/", { title: $("#NomeDoInput").attr("title") }, callback);
        return false;
    }
    
    function callback(data) { 
        //Faz alguma coisa se der tudo certo
    }
    O Controller fica assim

    public class ClienteController : Controller
    {
        [HttpPost]
        public ActionResult Teste(FormCollection collection)
        {
    
            for (int i = 0; i < collection.Count; i++)
            {
                Debug.WriteLine("Key : " + collection.Keys[i] + " Value : " + collection[i]);
            }
            return View();
        }
    }

    Abraços,
    Daniel Fonseca Castro
    www.danielfonsecacastro.com.br
    sexta-feira, 26 de fevereiro de 2010 23:11

Todas as Respostas

  • Olá Marcos,

    Quando você submete um input somente os atributos name e value são enviados para o server name:value.
    A primeira impressão que tenho é que você pode resolver isso com hidden inputs! Mas se você quiser enviar qualquer outro atributo você deve fazer isso com AJAX, por exemplo para enviar o atributo title você pode fazer assim se utilizar JQuery

    function enviarTitle() {
        $.post("/Cliente/Teste/", { title: $("#NomeDoInput").attr("title") }, callback);
        return false;
    }
    
    function callback(data) { 
        //Faz alguma coisa se der tudo certo
    }
    O Controller fica assim

    public class ClienteController : Controller
    {
        [HttpPost]
        public ActionResult Teste(FormCollection collection)
        {
    
            for (int i = 0; i < collection.Count; i++)
            {
                Debug.WriteLine("Key : " + collection.Keys[i] + " Value : " + collection[i]);
            }
            return View();
        }
    }

    Abraços,
    Daniel Fonseca Castro
    www.danielfonsecacastro.com.br
    sexta-feira, 26 de fevereiro de 2010 23:11
  • Daniel,

    Obrigado pela resposta!

    Acabei colocando as informações que eu precisava no "name" do controle e depois fiz um split para carregar as informações.

    Não ficou uma solução "elegante", mas esta funcionando, mas vou fazer um refactoring do código e melhorar isso.

    []'s
    marcos Fernandes
    segunda-feira, 1 de março de 2010 19:51