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

Fazendo associações entre classes com Model Binder

Professor durante o acompanhamento de seu curso, fiz um pequena modificação na classe Produto. Removi a propriedade CategoriaId para manter a camada de negocio mais "limpa".

    public class Produto
    {
        public int Id { get; set; }

        public String Nome { get; set; }

        public float Preco { get; set; }

        public CategoriaDoProduto Categoria { get; set; }

        public String Descricao { get; set; }

        public int Quantidade { get; set; }
    }

Então modifiquei o código da view:

<select id="categoria" name="produto.Categoria">
    @foreach(var categoria in ViewBag.Categorias) 
    {
      <option value="@categoria">@categoria.Nome</option>
    }
  </select>

Mas agora o Model Binder não está conseguindo fazer a associação entre produto e categoria:

public ActionResult Adiciona(Produto produto)
{
    Alert(produto.Categoria.Nome);
//Quero que apresente o nome da categoria selecionada
    return View();
}

Teria como fazer essa associação funcionar sem modificar as classes de negócio?

2 respostas

Olá, Eduardo

A aplicação estava funcionando antes da sua alteração? E quais os detalhes do erro que está ocorrendo agora?

solução!

Já resolvi, professor, obrigado. Aqui vai a solução. Abraço!

<select id="categoria" asp-for="produto.Categoria.Id">
    @foreach(var categoria in ViewBag.Categorias) 
    {
      <option value="@categoria.Id">@categoria.Nome</option>
    }
  </select>