PageRenderTime 48ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/BlogEngine/BlogEngine.NET/themes/RazorHost/CommentView.ascx

#
ASP.NET | 48 lines | 37 code | 11 blank | 0 comment | 4 complexity | 763ad2218c27eaeaa52a5e3c69c9cd52 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, BSD-3-Clause
  1. <%@ Control Language="C#" EnableViewState="False" Inherits="BlogEngine.Core.Web.Controls.CommentViewBase" %>
  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 RenderComment()
  10. {
  11. base.RenderComment();
  12. ParseAndInjectRazor();
  13. }
  14. private bool _rendered;
  15. private void ParseAndInjectRazor()
  16. {
  17. if (_rendered) { return; }
  18. string vPath = string.Format("~/themes/{0}/CommentView.cshtml", BlogSettings.Instance.Theme);
  19. string parsedRazor = RazorHelpers.ParseRazor(vPath, this); // 'this' is CommentViewBase.
  20. if (!string.IsNullOrWhiteSpace(parsedRazor))
  21. {
  22. // Assuming the Razor CommentView.cshtml is using @Html.NestedComments().
  23. int placeHolderPos = parsedRazor.IndexOf(RazorHelpers.NESTED_COMMENTS_MARKER, StringComparison.OrdinalIgnoreCase);
  24. if (placeHolderPos != -1)
  25. {
  26. string beforePlaceholderMarkup = parsedRazor.Substring(0, placeHolderPos);
  27. string afterPlaceholderMarkup = parsedRazor.Substring(placeHolderPos + RazorHelpers.NESTED_COMMENTS_MARKER.Length);
  28. phBeforeSubComments.Controls.Add(new LiteralControl(beforePlaceholderMarkup));
  29. phAfterSubComments.Controls.Add(new LiteralControl(afterPlaceholderMarkup));
  30. }
  31. }
  32. _rendered = true;
  33. }
  34. </script>
  35. <asp:PlaceHolder ID="phBeforeSubComments" runat="server" />
  36. <asp:PlaceHolder ID="phSubComments" runat="server" />
  37. <asp:PlaceHolder ID="phAfterSubComments" runat="server" />