Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Asp.net MVC - Passar mais de um valor ou um objeto via Model Binding.

Prezados,

Estou com uma dúvida de como enviar mais de uma valor por Model Binding para meu Controller. O exemplo é mais ou menos o seguinte:

Na minha View eu tenho:

<select name ="   " class= "   ">
            @foreach(var exemplo in ViewBag.Exemplos){
                   ......

            <option value="   ">                                                       </option>
            }

No Controller tenho:

public ActionResult ExemploDeController(Objeto objeto){
.
.
.
}

Dentro do @foreach da View eu vou processar alguns dados e gostaria de devolver os mesmos para o Controller, pode ser em forma de objeto, ou forma de lista eu posso alterar o parâmetro do Controller sem problema. Agradeço desde já.

Atenciosamente,

4 respostas

Não compreendi muito bem sua pergunta, se você deseja realizar uma ação com os valores manipulados na view, pode fazer por Ajax, e define o seu objeto no data

var url = '@Url.Action("ExemploDeController")';
var data = { propriedade1: "valor", propriedade2: "valor" }
$.ajax({
    type: "POST",
    url: url,
    data: data,
    beforeSend: function () {
        //Normalmente insere o loading caso de operação mais lenta
    },
    success: function (response) {

    },
    error: function () {
        //Funciona como catch
    },
    complete: function () {
        //Funciona como Finally, encerra o loading
    }
});

No argumento da ActionResult você pode colocar um model ou todas as propriedades que está esperando, por exemplo

public ActionResult ExemploDeController(int propriedade1, string propriedade2)

Por último, se quiser pode passar um dado manipulado na view através de TempData["ValorQueQuiser"], o TempData é utilizado uma única vez e eliminado, usado para passar normalmente de uma controller para outra (notificação de erros)

Oi Felipe,

Obrigado por responder e desculpa pelo meu exemplo, vou tentar explicar melhor. No meu caso eu tenho um ComboBox com as opções:

<option value=" "> valor1, valor2, valor3            </option>
<option value=" "> valor4, valor5, valor6            </option>
<option value=" "> valor7, valor8, valor9            </option>

No caso eu gostaria que ao selecionar uma dessas opções enviar de uma vez para meu Controller os três valores pertencentes a opção. Eu não entendo muito bem de Ajax, mas como eu poderia fazer para pegar os valores da Combobox e usar no modelo que você descreveu. Agradeço novamente.

atenciosamente,

solução!

Olá, então você me escreveu que quer pegar o text do option

var textoOption = $( "#IdDoSelect option:selected" ).text();

Isso vai imprimir exatamente o texto do option selecionado, por exemplo "valor1, valor2, valor3 "

Agora se quer pegar o atributo value da opção selecionada, faça da seguinte maneira:

var valorSelecionado = $( "#IdDoSelect" ).val();

Obrigado novamente Felipe, resolvido aqui.