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); }