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

JoaoNascimento

Duvida sobre passagem de valores entre controller e view

Mensagens Recomendadas

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


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
bruno1234

Concordo com o Caio, o ViewModel é a melhor opção, mas caso a tua aplicação seja muito simples e não quiseres estar a criar ViewModels podes também recorrer ao ViewBag e passar os valores de forma dinâmica.

Tens aqui um exemplo:

http://weblogs.asp.net/hajan/archive/2010/12/11/viewbag-dynamic-in-asp-net-mvc-3-rc-2.aspx


Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Partilhar esta mensagem


Ligação 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 os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.