public static string RenderSitecorePlaceHolder(string key) { var sublayoutId = GetSublayoutIdFromPlaceHolder(Sitecore.Context.Item[Sitecore.FieldIDs.LayoutField], key); if (!string.IsNullOrEmpty(sublayoutId)) { var layoutItem = Sitecore.Context.Database.GetItem(ID.Parse(sublayoutId)); var controllerName = layoutItem.Fields["Controller"].Value; var actionName = layoutItem.Fields["Action"].Value; HttpContext.Current.RewritePath(string.Concat("/", controllerName, "/", actionName)); RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); if (routeData != null) { var factory = new ControllerFactory(); var httpContextBase = new HttpContextWrapper(HttpContext.Current); var context = new RequestContext(httpContextBase, routeData); Type type = factory.GetController(context, controllerName); if (type != null) { var controller = (Controller)factory.GetController(context, type); var controllerContext = new ControllerContext(httpContextBase, routeData, controller); var viewContext = new ViewContext(controllerContext, new FakeView(), controller.ViewData, controller.TempData, TextWriter.Null); var helper = new HtmlHelper(viewContext, new ViewPage()); return helper.Action(actionName, controllerName).ToHtmlString(); } } HttpContext.Current.RewritePath("default.aspx"); } return ""; }
protected override void DoRender(HtmlTextWriter writer) { HttpContext.Current.RewritePath(HttpContext.Current.Request.RawUrl); RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); if (routeData == null) return; object controllerName = ""; object actionName = ""; routeData.Values.TryGetValue("action", out actionName); routeData.Values.TryGetValue("controller", out controllerName); if (Sitecore.Context.Item.Fields["ControllerName"] != null) { controllerName = GetControllerName(routeData); actionName = GetActionName(routeData); } var factory = new ControllerFactory(); var httpContextBase = new HttpContextWrapper(HttpContext.Current); var context = new RequestContext(httpContextBase, routeData); Type type = factory.GetController(context, (string)controllerName); if (type != null) { IController controller = factory.GetController(context, type); MvcPartialHelper.RenderPartial((string)actionName, null, (Controller)controller, routeData); } }
protected override void DoRender(HtmlTextWriter writer) { HttpContext.Current.RewritePath(string.Concat("/", Controller, "/", Action)); RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); if (routeData != null) { var factory = new ControllerFactory(); var httpContextBase = new HttpContextWrapper(HttpContext.Current); var context = new RequestContext(httpContextBase, routeData); Type type = factory.GetController(context, Controller); if (type != null) { IController controller = factory.GetController(context, type); MvcPartialHelper.RenderPartial(Action, null, (Controller)controller, routeData); } } HttpContext.Current.RewritePath("default.aspx"); }