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

Como passar uma Lista do view para o controller?

Nesse código eu gero uma lista na tela. Queria poder devolver ela, pelo action, para o controller. Mas sempre volta nulo ou zero.

Na verdade, eu preciso de apenas um parametro de um dos elementos dessa lista. Se eu conseguir retornar esse parametro já resolve.


@model List<Projeto.Mapeamento>

@{
    Layout = "~/Pages/_Layout.cshtml";
}


@{
    ViewData["Title"] = "Rastreabilidade do Mapeamento de Cenários e Casos de Teste";
}

<h2>Mapeamento dos Cenários e CTs - O que testar (Alvo de teste)</h2>


<table class="table table-hover">
    <thead>
        <tr>
            <th>Cenário</th>
            <th>Id do Caso de Teste</th>
            <th>Titulo do Caso de Teste / Pré-condições</th>
            <th>Conjunto de Entradas / Passos</th>
            <th>Resultado Esperado</th>
            <th>Rastreabilidade</th>
            <th>Prioridade</th>
            <th>Status da Execução</th>
            <th>Resultado da Execucao</th>
            <th>Tempo Medio da Execução</th>
            <th>Data da Execução</th>
        </tr>
    </thead>
    <tbody>

        @foreach (var item in Model)
        {
        <tr>
            <td>@item.Cenário</td>

            <td>@item.IdDocasoDeTeste</td>

            <td>@item.TituloDoCasoDeteste</td>

            <td>@item.Passos</td>

            <td>@item.ResultadoEsperado</td>

            <td>@item.Rastreabilidade</td>

            <td>@item.Prioridade</td>

            <td>@item.StatusDaExecucacao</td>

            <td>@item.ResultadoDaExecucao</td>

            <td>@item.TempoMedioDaExecucao</td>

            <td>@item.DataDaExecucao</td>

        </tr>
        }
    </tbody>

</table>
<br />




@Html.ActionLink("Adicionar outro Mapeamento", "NovoMapeamentoVizualizacao")
<br />
@Html.ActionLink("Apagar Tudo", "ApagarTudo")
<br />
@Html.ActionLink("Desfazer Ultimo", "ApagarUltimo")



2 respostas

Oi Caio, tudo bem?

Não entendi muito bem o propósito de enviar a lista de volta para o controller, porque essas informações o controller já possui. Essa lista vai ser editada pelo usuário?

De qualquer forma, normalmente, os dados são enviados do navegador para o controller por 2 formas:

  • Ajax (pelo código JavaScript)
  • Método POST (através de formulário)

No seu caso, acho mais adequado usar POST, mas para isso você precisaria de um

. No curso, nós vimos enviar dados através de formulário na aula seguinte: https://cursos.alura.com.br/course/aspnet-core-2-validacoes-seguranca/task/38552
solução!

Eu fiz isso aqui para passar um valor da view para o controller:

@{ var a = @Model.First().ExecucoesId;}


@Html.ActionLink("Adicionar outro Mapeamento", "NovoMapeamentoVizualizacao", new { ID = a })
<br />
@Html.ActionLink("Desfazer Ultimo", "ApagarUltimoVizualizacao", new { ID = a })
<br />

E no controller:

     public IActionResult NovoMapeamentoVizualizacao(int ID)
        {




            Mapeamento novoMapeamento = new Mapeamento();

            novoMapeamento.ExecucoesId = ID;

            return View(novoMapeamento);
        }