PageRenderTime 39ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/BlogEngine/BlogEngine.NET/themes/RazorHost/WidgetContainer.ascx

#
ASP.NET | 47 lines | 36 code | 11 blank | 0 comment | 4 complexity | 5cae3e68481d48acfa7e1339f95ba37f MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, BSD-3-Clause
  1. <%@ Control Language="C#" AutoEventWireup="true" Inherits="App_Code.Controls.WidgetContainer" %>
  2. <%@ Import Namespace="BlogEngine.Core" %>
  3. <script runat="server">
  4. protected override void OnLoad(EventArgs e)
  5. {
  6. base.OnLoad(e);
  7. ParseAndInjectRazor();
  8. }
  9. public override void RenderContainer()
  10. {
  11. base.RenderContainer();
  12. ParseAndInjectRazor();
  13. }
  14. private bool _rendered;
  15. private void ParseAndInjectRazor()
  16. {
  17. if (_rendered) { return; }
  18. string vPath = string.Format("~/themes/{0}/WidgetContainer.cshtml", BlogSettings.Instance.Theme);
  19. string parsedRazor = RazorHelpers.ParseRazor(vPath, this); // 'this' is WidgetContainer.
  20. if (!string.IsNullOrWhiteSpace(parsedRazor))
  21. {
  22. int placeHolderPos = parsedRazor.IndexOf(RazorHelpers.WIDGET_CONTAINER_BODY_MARKER, StringComparison.OrdinalIgnoreCase);
  23. if (placeHolderPos != -1)
  24. {
  25. string beforePlaceholderMarkup = parsedRazor.Substring(0, placeHolderPos);
  26. string afterPlaceholderMarkup = parsedRazor.Substring(placeHolderPos + RazorHelpers.WIDGET_CONTAINER_BODY_MARKER.Length);
  27. phBeforeContainerBody.Controls.Add(new LiteralControl(beforePlaceholderMarkup));
  28. phAfterContainerBody.Controls.Add(new LiteralControl(afterPlaceholderMarkup));
  29. }
  30. }
  31. _rendered = true;
  32. }
  33. </script>
  34. <asp:PlaceHolder ID="phBeforeContainerBody" runat="server" />
  35. <asp:PlaceHolder ID="phWidgetBody" runat="server" />
  36. <asp:PlaceHolder ID="phAfterContainerBody" runat="server" />