0
respostas

NullReferenceException - @foreach (var livro in ViewBag.Livros)

Olá, o projeto funcionou bem até o último vídeo do curso. Quando implemento a ViewBag.Livros o sistema apresenta o erro: NullReferenceException: Object reference not set to an instance of an object. AspNetCore.ViewsLivros_Para_ler_cshtml+d__0.MoveNext() in Para-ler.cshtml, line 12 @foreach (var livro in ViewBag.A).

Código LivrosController:


namespace Alura.ListaLeitura.App.Logica
{
    public class LivrosController : Controller
    {
        public IEnumerable<Livro> Livros { get; set; }
        public string Detalhes(int id)
        {
            var repo = new LivroRepositorioCSV();

            while (id > repo.Todos.Count())
            {
                return $"Matricula (Id) Invalida!\nDigite uma matricula valida de 1 ate {repo.Todos.Count()}.";
            }

            var livro = repo.Todos.First(l => l.Id == id);
            return livro.Detalhes();
        }

        public IActionResult ParaLer()
        {
            var _repo = new LivroRepositorioCSV();
            var Livros = _repo.ParaLer.Livros;
            ViewBag.A = Livros;
            var html = new ViewResult { ViewName = "Para-ler" };
            return html;
        }
        public IActionResult Lendo(HttpContext context)
        {
            var _repo = new LivroRepositorioCSV();
            ViewBag.Livros = _repo.Lendo.Livros;
            var html = new ViewResult { ViewName = "Lendo"};
            return html;
        }

        public IActionResult Lidos()
        {
            var _repo = new LivroRepositorioCSV();
            //var html = CarregaLista(_repo.Lidos.Livros, "Lidos");
            return new ViewResult { ViewName = "Lidos"};
        }

        public static string CarregaLista(IEnumerable<Livro> livros, string lista)
        {
            var conteudoArquivo = HtmlUtils.CarregaArquivoHTML(lista);
            foreach (var livro in livros)
            {
                conteudoArquivo = conteudoArquivo.Replace("#livro", $"<li>{livro.Titulo} - {livro.Autor}</li>#livro");
            }
            return conteudoArquivo.Replace("#livro", "");

        }

        public string Teste()
        {
            return "Nova Funcionalidade Implementada";
        }

    }
}

Código Pagina Para-ler (lista do curso) em html:

<!DOCTYPE html>


<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>Livros Para Ler</title>
</head>
<body>
    <h1>Livros Para Ler</h1>
    <ul>
        @foreach (var livro in ViewBag.Livros)
        {
            <li>@livro.Titulo - @livro.Autor</li>
        }
    </ul>
</body>
</html>

Se puderem me ajudar agradeço.