Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

JoaoNascimento

Duvida sobre passagem de valores entre controller e view

Mensagens Recomendadas

JoaoNascimento    0
JoaoNascimento

Boas a todos mais uma vez.

Desta vez a minha duvida é como passar uma serie de valores entre o controller e a View.

Tenho uma query sql a ir buscar a base de dados e depois utilizo uma lista para enviar os valores para a View. Até ai tudo bem, só que existem dois valores que devem ser calculado automaticamente.

A minha duvida é essa mesmo, em primeiro lugar onde calcular esses valores? No controller certo? E como retornar e apresentar no meio da outra informação na View?

Alguém me dá umas ideias!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caio Proiete    0
Caio Proiete

Olá João,

Esses valores podem ser calculados na própria Controller (provavelmente em um ou mais métodos para o efeito), ou então numa classe separada (serviço) que você possa chamar a partir da Controller.

Para mostrar esses valores calculados juntamente com a outra informação que você já mostra (lista), idealmente deve criar uma classe específica para este propósito (passar parâmetros da Controller para a View, a.k.a. ViewModel).

Por exemplo:

public class PaginaIndexViewModel
{
    public List<Cliente> ListaDeClientes { get; set; }
    public int ValorCalculado1 { get; set; }
    public int ValorCalculado2 { get; set; }
}

Depois, na Controller, você obtem os dados que precisa, constroi a lista, calcula os valores, etc..., cria um objecto da classe "PaginaIndexViewModel" e o preenche, e então retorna a View juntamente com esse objecto preenchido...

public class PaginaController : Controller
{
    public ActionResult Index()
    {
        // ... Obtem dados, efectua cálculos, etc...

        var model = new PaginaIndexViewModel
        {
            ListaDeClientes = ObterListaDeClientes(...),
            ValorCalculado1 = ObterValorCalculado1(...),
            ValorCalculado2 = ObterValorCalculado2(...),
        };

        return View(model);
    }
}

Por fim, na View, já recebe a informação "pronta" para mostrar e pode colocar onde quiser...

@model AplicacaoWeb.PaginaIndexViewModel

<h1>@ValorCalculado1</h1>

@foreach (var cliente in Model.ListaDeClientes)
{
    // ...
}

<h1>@ValorCalculado2</h1>

Abraços,

Caio Proiete

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JoaoNascimento    0
JoaoNascimento

Já resolvi o problema amigos, usei uma ViewData. A minha principal duvida era se poderia correr um foreach dentro de outro. Mas pelo que parece consegui e deu o resultado certo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade