Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

@ViewBag ou Pagina fortemente tipada

Nesse curso ate o momento por exemplo a pagina Visualizar onde visualizamos um produto a partir de um id, é possível enviar um produto para ser capturada na view, através da @ViewBag ou enviar na View fortemente tipada

        public ActionResult Visualiza(int id)
        {
            Produto Produto = new Produto();

            using (var context = new EstoqueContext())
            {
                Produto = context.Produtos.Include("Categoria").Where(p => p.Id == id).FirstOrDefault();
            }

            return View(Produto);
        }

ou

        public ActionResult Visualiza(int id)
        {
            Produto Produto = new Produto();

            using (var context = new EstoqueContext())
            {
                Produto = context.Produtos.Include("Categoria").Where(p => p.Id == id).FirstOrDefault();
            }

            ViewBag.Produto = Produto;

            return View();
        }

devemos da preferencia a um desses métodos? porque?

1 resposta
solução!

Olá Cesar,

geralmente damos preferência por trabalhar com a view fortemente tipada. Um primeiro ponto é que trabalhando com a tipagem na página, você consegue usar os Html Helpers, que já vem com métodos que já são capazes de construir a página em cima das propriedades do modelo, como TextBoxFor por exemplo.

Outra vantagem é que colocando o tipo na tela você passa a pegar erros em tempo de compilação. Por exemplo, se você tem a classe Produto assim:

public class Produto {
    public string Nome { get; set; }
}

E manda para a view pela ViewBag e chamar assim na tela ViewBag,Produto.Name, com Name ao invés de Nome, você receberá o erro apenas em tempo de execução. Agora se você mandar fortemente tipada e chamar Model.Name, já em compilação ele avisará do erro dado que o tipo forte Produto não tem uma propriedade Name. Além disso, ele vai conseguir fazer autocomplete por Ctrl + espaço, que inclusive evitam erros deste gênero.