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

4. Lidando com Formulários e o Cadastro de Produtos - retornando um List para o controller

Bom dia,

No exemplo da aula entendi perfeitamente, mas agora tenho uma dúvida quando precisar mandar uma List de input variáveis para o método Adiciona do controller. Por exemplo:

Minha view:

''< form action="/Home/Adiciona" method="post"> @Html.AntiForgeryToken()

@foreach (PesquisaAtendimento.Models.Pergunta pergunta in ViewBag.listPergunta) {

@pergunta.Descricao

foreach (PesquisaAtendimento.Models.Resposta resposta in ViewBag.listResposta) { if (pergunta.PerguntaId == resposta.Pergunta) { if (resposta.Tipo == "radio") { @resposta.Descricao } else if (resposta.Tipo == "text") { } } } @Html.ValidationMessage("resposta.RespostaId") }

'''

Meu controller:

'''[HttpPost] [ValidateAntiForgeryToken] public ActionResult Adiciona(Resposta resposta) {

}'''

2 respostas

Oi Vitor, tudo beleza cara?

Me desculpe, eu não entendi o que você quer fazer. Poderia detalhar um pouco mais, por favor? :)

solução!

Olá Gabriel, desculpe, mas acabei resolvendo dessa forma.

@model PesquisaAtendimento.Models.RespostaViewModel

@using (Html.BeginForm("Adiciona", "Home", FormMethod.Post)) { @Html.AntiForgeryToken()

for (int i = 0; i < Model.Perguntas.Count;i++ ) { @Html.LabelFor(u => u.Perguntas[i].Descricao, Model.Perguntas[i].Descricao)

for (int b = 0; b < Model.Respostas.Count; b++) { if (Model.Perguntas[i].PerguntaId == Model.Respostas[b].Pergunta) { if (Model.Respostas[b].Tipo == "radio") { @Html.RadioButtonFor(m => m.Respostas[i].RespostaId, Model.Respostas[b].RespostaId) @Model.Respostas[b].Descricao } else if (Model.Respostas[b].Tipo == "text") { @Html.TextAreaFor(m => m.Respostas[i].Descricao, new { @cols = "80", @rows = "4", @Value = "test" }) } } }

} @Html.ValidationMessage("Validacao") }

Usei classe tipada, e peguei no meu metodo a classe como list.

public class RespostaViewModel { public Pergunta Pergunta { get; set; } public List Perguntas { get; set; } public Resposta Resposta { get; set; } public List Respostas { get; set; } }

Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software