Usuário com melhor resposta
Recuperar informações de Atributos na Controller

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
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
- Marcado como Resposta Marcos Anunciação segunda-feira, 1 de março de 2010 19:52
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
- Marcado como Resposta Marcos Anunciação segunda-feira, 1 de março de 2010 19:52
-
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