public ActionResult Filtrar(ListarVM vm, Paginacao paginacao)
        {
            if (!String.IsNullOrEmpty(vm.UltimaBusca))
            {
                vm.Filtros = ViewModelHelper.JsSerializer.Deserialize <ListarVM>(vm.UltimaBusca).Filtros;
            }

            vm.Paginacao   = paginacao;
            vm.UltimaBusca = HttpUtility.HtmlEncode(ViewModelHelper.JsSerializer.Serialize(vm.Filtros));
            vm.Paginacao.QuantPaginacao = Convert.ToInt32(ViewModelHelper.CookieQuantidadePorPagina);
            vm.SetListItens(_busLista.QuantPaginacao, vm.Paginacao.QuantPaginacao);

            Resultados <Funcionario> resultados = _bus.Filtrar(vm.Filtros, vm.Paginacao);

            if (resultados == null)
            {
                return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet));
            }

            if (!vm.PodeAssociar)
            {
                vm.PodeEditar          = User.IsInRole(ePermissao.FuncionarioEditar.ToString());
                vm.PodeAlterarSituacao = User.IsInRole(ePermissao.FuncionarioAlterarSituacao.ToString());
            }

            vm.PodeVisualizar = User.IsInRole(ePermissao.FuncionarioVisualizar.ToString());

            vm.Paginacao.QuantidadeRegistros = resultados.Quantidade;
            vm.Paginacao.EfetuarPaginacao();
            vm.Resultados = resultados.Itens;

            return(Json(new { @Msg = Validacao.Erros, @Html = ViewModelHelper.RenderPartialViewToString(ControllerContext, "ListarResultados", vm) }, JsonRequestBehavior.AllowGet));
        }