private static MvcHtmlString Action(HtmlHelper helper, CmsWidgetContext context, out bool error) { error = false; var controller = context.RouteData["controller"] as string; var action = context.RouteData["action"] as string; MvcHtmlString result; try { result = helper.Action(action, controller, context.RouteData); } catch (CmsWidgetRenderException e) { error = true; result = new MvcHtmlString(String.Format("<div class=\"qusion-cms-widget-error \">{0}</div>", e.Message)); } catch (Exception e) { error = true; result = new MvcHtmlString(String.Format("<div class=\"qusion-cms-widget-error\">{0}</div>", e.Message)); } return(result); }
public static MvcHtmlString RenderCmsWidget(this HtmlHelper helper, CmsWidgetContext context, StringBuilder output) { if (context == null) { throw new CmsException(); } // Render qusion cms widget containers only if edit mode (Page or Template) if (context.PageContext.Mode != CmsPageContextMode.View) { output.AppendFormat( "\r<div class=\"qusion-cms-widget\" data-key=\"{0}\" data-scope=\"{1}\" data-title=\"{2}\">", context.ID, (context.IsTemplateWidget ? "template" : "page"), context.Title); } // Get action result string bool error; var html = Action(helper, context, out error); // if error occures we display error only if not view if (error) { if (context.PageContext.Mode != CmsPageContextMode.View) { output.Append(html); } } else { output.Append(html); } // Close widget container tag if (context.PageContext.Mode != CmsPageContextMode.View) { output.AppendLine("</div>"); } return(MvcHtmlString.Create(output.ToString())); }