2
respostas

Variavel @model ASP.NET MVC

public ActionResult Index()
{
    int contador = Convert.ToInt32(Session["contador"]);
    contador++;
    Session["contador"] = contador;
    return View(contador);
}

Seguinte, quando o método Index direciona a variavel contador para a view, entao na view acessamos a variavel @Model e la está o valor passado.

Minha duvida é bem simples, em um outro exercicio eu acessei uma lista de produtos que foi enviada para a view da mesma forma, so que na view a variavel era @Model com "M" maiusculo. Existe alguma diferença?

Obrigado.

2 respostas

Olá Renan,

não sei se peguei a diferença que você quer saber, porque tanto no contador quando na lista você deve ter usado o @Model com M maiúsculo. Mas imagino que a dúvida seja com relação a diferença entre o @model e o @Model.

O @Model é uma variável que guarda o valor que você está passando para a sua view. Por exemplo, o contador ou os produtos que você retornou nos seus métodos. Já o @model é uma palavra reservada para definir qual o tipo do dado que a view deve receber na variavel @Model.

Tanto que na lista você deve ter usado os dois:

@model IList<CaelumEstoque.Models.Produto> : define que o @Model é do tipo IList.

@foreach(CaelumEstoque.Models.Produto produto in Model): como tem o @ no começo, o razor interpreta todo esse bloco de código. Logo quando você faz o Model seria como chamar a variável @Model, ou seja, a lista de produtos que você retornou no método.

Boa tarde Renan,

Apenas reforçando a resposta do Lucas, o @Model citado por ele:

@model IList<CaelumEstoque.Models.Produto>

Não é apenas do tipo IList, sim do IList de Produto, um tipo de modelo criado por nós na aplicação, assim o @model recebe esse tipo e como ele disse é acessado pelo @Model para uma lista dinâmica de produtos.