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

ViewBag não funciona

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Estoque.DAO;

namespace Estoque.Controllers
{
    public class ProdutoController : Controller
    {


        public ActionResult Index()
        {


            ProdutoDAO dao = new ProdutoDAO();


            IList<Produto> produtos = dao.listarProduto();



            ViewBag.Produtos = produtos;

            //  the name ViewBag does not exist in the current   contex 

            return View();
        }

    }
}

Ao tentar utilizar atributo ViewBag herdada da classe Controller, exibe o seguinte erro:

//  the name ViewBag does not exist in the current   context
5 respostas

Oi Jose

Você pode verificar se a classe Controller que você está utilizando na herança vem do namespace System.Web.Mvc? Além disso, qual é a versão do MVC que você está utilizando no projeto?

A classe controller vem da: System.Web.Mvc.Controller, versão do asp.net mvc 2.

Oi Jose

O ViewBag só é suportado a partir do Asp.Net MVC 3, isso ocorre pois na época do Asp.Net MVC 2, a linguagem C# ainda não suportava dynamic objects e por isso era impossível implementar a ViewBag.

No seu caso, a alternativa para a ViewBag é uma outra variável herdada de controller chamada ViewData. Essa variável funciona como um dicionário de string para object, então para enviar uma variável para a view, utilizamos:

public ActionResult Index()
{
    IList<Produto> produtos = new ProdutoDao().Lista();
    ViewData["produtos"] = produtos;
    return View();
}

Mas eu recomendo fortemente que você migre o seu projeto para pelo menos utilizar o Asp.Net MVC 3.

Tudo bem, mas como migrar meu projeto para ASP.NET MVC 3?

solução!

Resolvido utilizei "nuget" para atualizar versão do ASP.NET MVC.

Obrigado.