The values in my array do not appear

0
namespace ExemploValidacao.Models
{
    public class Noticia
    {
        public int NoticiaId { get; set; }

        public string Titulo { get; set; }

        public string Conteudo { get; set; }

        public string Categoria { get; set; }

        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime Data { get; set; }

        //banco de dados temporário
        public IEnumerable<Noticia> TodasAsNoticias()
        {
            var retorno = new Collection<Noticia>
                {
                    new Noticia
                        {
                            NoticiaId = 1,
                            Categoria = "Esportes",
                            Titulo = "Felipe Massa ganha F1",
                            Conteudo = "Numa tarde de chuva Felipe Massa ganha F1 no Brasil...",
                            Data = new DateTime(2012,7,5)
                        },
                    new Noticia
                        {
                            NoticiaId = 2,
                            Categoria = "Política",
                            Titulo = "Presidente assina convênios",
                            Conteudo = "Durante reunião o presidente Ismael Freitas assinou os convênios...",
                            Data = new DateTime(2012,7,3)
                        },
                    new Noticia
                        {
                            NoticiaId = 3,
                            Categoria = "Política",
                            Titulo = "Vereador é eleito pela 4ª vez",
                            Conteudo = "Vereador Fabio Pratt é eleito pela quarta vez...",
                            Data = new DateTime(2012,7,20)
                        },
                    new Noticia
                        {
                            NoticiaId = 4,
                            Categoria = "Esportes",
                            Titulo = "O tão sonhado titulo chegou",
                            Conteudo = "Em um jogo que levou os torcedores ao delirio...",
                            Data = new DateTime(2012,7,18)
                        },
                    new Noticia
                        {
                            NoticiaId = 5,
                            Categoria = "Humor",
                            Titulo = "O Comediante Anderson Renato fará shou hoje",
                            Conteudo = "O comediante mais engraçados dos comentários do Youtube fará show...",
                            Data = new DateTime(2012,7,14)
                        },
                    new Noticia
                        {
                            NoticiaId = 6,
                            Categoria = "Policial",
                            Titulo = "Tenente coronel Lucas Farias Santos assume o controle",
                            Conteudo = "Durante a retomada do morro o tenente coronel disse...",
                            Data = new DateTime(2012,7,19)
                        },
                    new Noticia
                        {
                            NoticiaId = 7,
                            Categoria = "Esportes",
                            Titulo = "Atacante do Barcelona faz 4 gols",
                            Conteudo = "O atacante Lucas Farias Santos Messi, fez 4 gols e decidiu o titulo...",
                            Data = new DateTime(2012,7,8)
                        }
                };
            return retorno;
        }
    }
}

Controller:

namespace ExemploValidacao.Controllers
{
    public class NoticiaController : Controller
    {
        //criou uma lista/ array do tipo "Noticia"
        private readonly IEnumerable<Noticia> todasAsNoticias;

        public NoticiaController()
        {
            //pega as notícias na ordem decrescente pelas datas
            todasAsNoticias = new Noticia().TodasAsNoticias().OrderByDescending(x => x.Data);

            //Noticia noticia = new Noticia();
            //todasAsNoticias = noticia.TodasAsNoticias().OrderByDescending(x => x.Data);
        }

        public ActionResult IndexNoticia()
        {
            var ultimasNoticias = todasAsNoticias.Take(3);

            var todasAsCategorias = todasAsNoticias.Select(x => x.Categoria).Distinct().ToList();

            //posso acessar a var "todasAsCategorias" na View através da ViewBag
            ViewBag.Categorias = todasAsCategorias;

            return View(ultimasNoticias);
        }

    }
}

View:

@model IEnumerable<ExemploValidacao.Models.Noticia>
@{
    ViewBag.Title = "Index";
}

<h2>Rotas em ASP.NET MVC</h2>

<div>
    <ul>
        @*LISTA DE TODAS AS CATEGORIAS*@
        @foreach (string item in ViewBag.Categorias)
        {
            <li>@Html.ActionLink(item, "MostraCategoria", "Noticia", new { @categoria = item }, null)
            </li>
        }
    </ul>
</div>
<div>
    <ul>
        @*LISTA DAS ÚLTIMAS 3 NOTÍCIAS*@
        @foreach (var item in Model)
        {
            <li>
                @Html.ActionLink(item.Titulo, "MostraNoticia", "Noticia", new
                    {
                        @noticiaId = item.NoticiaId,
                        @categoria = item.Categoria.ToLower(),
                        @titulo = item.Titulo.ToLower()
                    }, null)
                <em>@Html.DisplayFor(modelItem => item.Categoria)</em>
                <b>@Html.DisplayFor(modelItem => item.Data)</b>
            </li>
        }
    </ul>
</div>
<div>
    @Html.ActionLink("Todas as Noticias", "TodasAsNoticias", "Noticia")
</div>

Print: Asyoucanseeinprint,var"ultimasNoticias" shows "count" as 0. Should not it show 3 indexes because of the "Take (3)" method? When I run the project, it shows exactly 3 indexes in the View list.

My project: link

    
asked by anonymous 01.04.2018 / 01:31

0 answers