public ActionResult Post(int id, int? pagina)
        {
            var conexao = new ConexaoBanco();
            var viewModel = new DetalhesPostViewModel();
            var post = (from p in conexao.Posts where p.Id == id select p).FirstOrDefault();

            if (post == null)
            {
                throw new Exception(string.Format("Post Código {0} não encontrado"));
            }
            preencherViewModel(viewModel, post, pagina);

            viewModel.Tags = (from p in post.PostTags select p.sIdTag).ToList();

            return View(viewModel);
        }
        public ActionResult Post(DetalhesPostViewModel viewModel)
        {
            var conexao = new ConexaoBanco();
            var post = (from p in conexao.Posts where p.Id == viewModel.id select p).FirstOrDefault();

            if (ModelState.IsValid)
            {

                if (post == null)
                {
                    throw new Exception(string.Format("Post código {0} não encontrado.", viewModel.id));
                }
                var comentario = new Comentario();
                comentario.bAdmPost = HttpContext.User.Identity.IsAuthenticated;
                comentario.lDescricao = viewModel.ComentarioDescricao;
                comentario.sEmail = viewModel.ComentarioEmail;
                comentario.idPost = viewModel.id;
                comentario.sNome = viewModel.ComentarioNome;
                comentario.sPaginaWeb = viewModel.ComentarioPaginaWeb;
                comentario.dDataHora = DateTime.Now;

                try
                {
                    conexao.Comentarios.Add(comentario);
                    conexao.SaveChanges();
                    return Redirect(Url.Action("Post", new
                    {
                        ano = post.dDataPublicacao.Year,
                        mes = post.dDataPublicacao.Month,
                        dia = post.dDataPublicacao.Day,
                        titulo = post.sTitulo,
                        id = post.Id
                    }) + "#comentarios");
                }
                catch (Exception e)
                {
                    ModelState.AddModelError("", e.Message);
                }
            }
            preencherViewModel(viewModel, post, null);
            return View(viewModel);
        }
        private static void preencherViewModel(DetalhesPostViewModel viewModel, Post post, int? pagina)
        {
            viewModel.id = post.Id;
            viewModel.Titulo = post.sTitulo;
            viewModel.Autor = post.sAutor;
            viewModel.DataPublicacao = post.dDataPublicacao;
            viewModel.HoraPublicacao = post.dDataPublicacao;
            viewModel.Visivel = post.bVisivel;
            viewModel.Descricao = post.sDescricao;
            viewModel.Resumo = post.sResumo;
            viewModel.QtdComentarios = post.Comentarios.Count();
            viewModel.Descricao = post.sDescricao;
            //Adicionar tags
            viewModel.Tags = post.PostTags.Select(x => x.sIdTag).ToList();
            var paginaCorreta = pagina.GetValueOrDefault(1);
            var registroPorPagina = 10;
            var qtdeRegistros = post.Comentarios.Count();
            var indiceDaPagina = paginaCorreta - 1;
            var qtdeRegistrosPular = (indiceDaPagina * registroPorPagina);
            //  Arendonta para cima
            var qtdePaginas = Math.Ceiling((decimal)qtdeRegistros / (decimal)registroPorPagina);

            viewModel.iLComentarios = (from p in post.Comentarios orderby p.dDataHora descending select p)
            .Skip(qtdeRegistrosPular).Take(registroPorPagina).ToList();

            viewModel.iPaginaAtual = paginaCorreta;
            viewModel.iTotalPaginas = (int)qtdePaginas;
        }