public static MvcHtmlString PartialView(this HtmlHelper htmlHelper, string partialViewName, object model, ViewDataDictionary diccionario)
        {
            MvcHtmlString resultado = null;

            UtilTrazas.AgregarEntrada("HtmlHelpers.PartialView 3");
            CommunityModel Comunidad = htmlHelper.ViewBag.Comunidad;

            string rutaVistasPersonalizadas = htmlHelper.ViewBag.rutaVistasPersonalizadas;

            if (!System.IO.File.Exists(AppContext.BaseDirectory + partialViewName.Replace("~/", "")))
            {
                partialViewName = partialViewName.Replace($"/{rutaVistasPersonalizadas}/", "/GenericViews/");
            }
            // todo
            resultado = System.Web.Mvc.Html.PartialExtensions.Partial(htmlHelper, partialViewName, model, diccionario);

            UtilTrazas.AgregarEntrada("Fin HtmlHelpers.PartialView 3");
            return(resultado);
        }
        public static MvcHtmlString PartialView(this HtmlHelper htmlHelper, string partialViewName, object model)
        {
            MvcHtmlString resultado = null;

            UtilTrazas.AgregarEntrada("HtmlHelpers.PartialView 2");

            string rutaVistasPersonalizadas = htmlHelper.ViewBag.rutaVistasPersonalizadas;

            string partialViewNameOld = partialViewName;

            Guid guid;

            if (partialViewName.StartsWith("../Shared/") || partialViewName.StartsWith("/Shared/"))
            {
                partialViewName = $"~/{rutaVistasPersonalizadas}/Views{partialViewName.Replace("..", "")}.cshtml";
            }
            else if (partialViewName.StartsWith("ControlesMVC/"))
            {
                partialViewName = $"~/{rutaVistasPersonalizadas}/Views/Shared/{partialViewName}.cshtml";
            }
            else if (Guid.TryParse(partialViewName, out guid))
            {
                bool vistaPersonalizadaEncontrada = false;
                if (Directory.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, rutaVistasPersonalizadas, "CMS")))
                {
                    var files = Directory.GetFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, rutaVistasPersonalizadas, "CMS"), $"*{partialViewName}.cshtml", SearchOption.AllDirectories);
                    if (files.Length > 0)
                    {
                        string[] path = files[0].Split(new string[] { "\\Views" }, StringSplitOptions.RemoveEmptyEntries);
                        partialViewName = $"/Views{path[1]}".Replace('\\', '/');
                        vistaPersonalizadaEncontrada = true;
                    }
                }

                if (!vistaPersonalizadaEncontrada)
                {
                    string rutaVistasPersonalizadasEcosistema = htmlHelper.ViewBag.rutaVistasPersonalizadasEcosistema;

                    if (Directory.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, rutaVistasPersonalizadasEcosistema, "CMS")))
                    {
                        var files = Directory.GetFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, rutaVistasPersonalizadasEcosistema, "CMS"), $"*{partialViewName}.cshtml", SearchOption.AllDirectories);
                        if (files.Length > 0)
                        {
                            string[] path = files[0].Split(new string[] { "\\Views" }, StringSplitOptions.RemoveEmptyEntries);
                            partialViewName = $"/Views{path[1]}".Replace('\\', '/');
                            vistaPersonalizadaEncontrada = true;
                        }
                    }
                }
                if (!vistaPersonalizadaEncontrada)
                {
                    // No se ha encontrado la vista ni en la carpeta del proyecto ni en la del ecosistema
                    return(MvcHtmlString.Empty);
                }
            }
            else if (htmlHelper.ViewBag.ViewPath.Contains($"~/{rutaVistasPersonalizadas}/Views/Busqueda"))
            {
                if (partialViewName.Equals("../CargadorResultados/CargarResultados"))
                {
                    PintandoResultados = true;
                    PintandoFacetas    = false;
                }
                else if (partialViewName.Equals("../CargadorFacetas/CargarFacetas"))
                {
                    PintandoResultados = false;
                    PintandoFacetas    = true;
                }

                if (PintandoResultados)
                {
                    partialViewName = $"~/{rutaVistasPersonalizadas}/Views/CargadorResultados/{partialViewName}.cshtml";
                }
                else if (PintandoFacetas)
                {
                    partialViewName = $"~/{rutaVistasPersonalizadas}/Views/CargadorFacetas/{partialViewName}.cshtml";
                }
            }
            else
            {
                string partialPath = htmlHelper.ViewBag.ViewPath;

                if (partialPath.Equals($"~/{rutaVistasPersonalizadas}/Views/FichaRecurso") || partialPath.Equals($"~/{rutaVistasPersonalizadas}/Recursos"))
                {
                    if (partialViewName.StartsWith("SemCms/_") || partialViewName.StartsWith("ControlesMVC/"))
                    {
                        partialPath = $"~/{rutaVistasPersonalizadas}/Views/Shared";
                    }
                    else
                    {
                        partialPath = $"~/{rutaVistasPersonalizadas}/Views/FichaRecurso";
                    }
                }
                partialViewName = $"{partialPath}/{partialViewName}.cshtml";
            }

            if (!System.IO.File.Exists(AppContext.BaseDirectory + partialViewName.Replace("~/", "")))
            {
                string rutaVistasPersonalizadasEcosistema = htmlHelper.ViewBag.rutaVistasPersonalizadasEcosistema;
                partialViewName = partialViewName.Replace($"/{rutaVistasPersonalizadas}/Views/", $"/{rutaVistasPersonalizadasEcosistema}/Views/");

                if (!System.IO.File.Exists(AppContext.BaseDirectory + partialViewName.Replace("~/", "")))
                {
                    partialViewName = partialViewName.Replace($"/{rutaVistasPersonalizadasEcosistema}/Views/", "/GenericViews/");
                }
            }

            // necesario para encontrar la ruta, porque fichaRecurso también hace uso de la carpeta Shared
            try
            {
                resultado = System.Web.Mvc.Html.PartialExtensions.Partial(htmlHelper, partialViewName, model);
            }
            catch (InvalidOperationException)
            {
                resultado = System.Web.Mvc.Html.PartialExtensions.Partial(htmlHelper, partialViewNameOld, model);
            }

            // todo
            //resultado = System.Web.Mvc.Html.PartialExtensions.Partial(htmlHelper, partialViewName, model);
            UtilTrazas.AgregarEntrada("Fin HtmlHelpers.PartialView 2");
            return(resultado);
        }