1-888-365-2779
+1-888-365-2779
Try Now
More in this section

Forums / General Discussions / Where is the Layout Control Tutorial?

Where is the Layout Control Tutorial?

10 posts, 0 answered
  1. Stacey
    Stacey avatar
    291 posts
    Registered:
    18 Oct 2012
    05 Apr 2011
    Link to this post
    Can anyone post the link to the documentation tutorial that walks through creating custom layout controls?  It seems the link may have changed from what it previously was.
  2. Slavo
    Slavo avatar
    295 posts
    Registered:
    24 Sep 2012
    06 Apr 2011
    Link to this post
    Hello Stacey,

    We did some changes to the developers guide and the articles you mention were outdated. We need to revise them, and once we are done, we'll include them in the new structure of the guide. I'm attaching the old versions that you can use, but keep in mind they are going to be expanded and rewritten.

    All the best,
    Slavo
    the Telerik team

  3. Seattle Web Group
    Seattle Web Group avatar
    29 posts
    Registered:
    03 May 2011
    21 Jul 2011
    Link to this post
    When attempting to create the layout control in the provided document we're getting the following error when the layout control is loaded on the site front end.  The control can be successfully dragged to the page in the site administration, and content can be added to it.  The error does not come up if you edit the layout control, adjusting it's column widths before publishing the page.

    Server Error in '/' Application.

    String reference not set to an instance of a String.
    Parameter name: s

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.ArgumentNullException: String reference not set to an instance of a String.
    Parameter name: s

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace:

    [ArgumentNullException: String reference not set to an instance of a String.
    Parameter name: s]
       System.Text.Encoding.GetBytes(String s) +9385621
       Telerik.Sitefinity.Utilities.HtmlParsing.HtmlParser.Init(String html) +53
       Telerik.Sitefinity.Utilities.HtmlParsing.HtmlParser..ctor(String html) +271
       Telerik.Sitefinity.Abstractions.VirtualPath.SitefinityPageResolver.ProcessLayoutString(String template, PlaceHolderCursor parentPlaceHolder, CursorCollection placeholders, String layoutId) +123
       Telerik.Sitefinity.Abstractions.VirtualPath.SitefinityPageResolver.AppendLayout(String layoutTemplate, String assemblyInfo, PlaceHolderCursor parentPlaceHolder, CursorCollection placeHolders, String layoutId) +494
       Telerik.Sitefinity.Abstractions.VirtualPath.SitefinityPageResolver.BuildControls(PageData pageData, List`1 controlConatiners, CursorCollection placeHolders) +2026
       Telerik.Sitefinity.Abstractions.VirtualPath.SitefinityPageResolver.RenderPage(StringBuilder output, PageData pageData, RequestContext context, String virtualPath) +227
       Telerik.Sitefinity.Abstractions.VirtualPath.SitefinityPageResolver.Open(PathDefinition definition, String virtualPath) +301
       Telerik.Sitefinity.Abstractions.VirtualPath.PathDefinition.OpenFile(String virtualPath) +67
       Telerik.Sitefinity.Abstractions.VirtualPath.VirtualPathManager.OpenFile(String virtualPath) +209
       Telerik.Sitefinity.Abstractions.VirtualPath.SitefinityVirtualFile.Open() +42
       System.Web.Hosting.VirtualPathProvider.OpenFile(String virtualPath) +31
       System.Web.UI.TemplateParser.ParseFile(String physicalPath, VirtualPath virtualPath) +133
       System.Web.UI.TemplateParser.ParseInternal() +86
       System.Web.UI.TemplateParser.Parse() +160
       System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType() +110
       System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider) +65
       System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() +218
       System.Web.Compilation.BuildProvidersCompiler.PerformBuild() +40
       System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +9031190
       System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +320
       System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +111
       System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) +125
       System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) +52
       System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(String virtualPath, Type requiredBaseType) +28
       Telerik.Sitefinity.Web.PageRouteHandler.BuildHttpHandler(RequestContext requestContext) +1370
       Telerik.Sitefinity.Web.PageRouteHandler.GetHttpHandler(RequestContext requestContext) +63
       System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +8975064
       System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +86
       System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
    


    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.225
  4. Slavo
    Slavo avatar
    295 posts
    Registered:
    24 Sep 2012
    26 Jul 2011
    Link to this post
    Hi Seattle Web Group,

    It is hard to say what exactly is going wrong. Can you open a support ticket and send us the layout control as you have created it?

    All the best,
    Slavo
    the Telerik team
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  5. Steve
    Steve avatar
    16 posts
    Registered:
    14 Jul 2010
    28 Oct 2011
    Link to this post
    Was there any resolution for this?  In the same boat.
  6. Slavo
    Slavo avatar
    295 posts
    Registered:
    24 Sep 2012
    02 Nov 2011
    Link to this post
    Hello Steve,

    Can you please share the Layout control you are trying to implement?

    Kind regards,
    Slavo
    the Telerik team
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  7. Steve
    Steve avatar
    16 posts
    Registered:
    14 Jul 2010
    02 Nov 2011
    Link to this post
    <%@ Control Language="C#" %>
    <section class="layoutLeft">
        <article>
            <div runat="server" class="sf_cols">
                <div runat="server" class="sf_colsOut">
                    <div runat="server" class="sf_colsIn">
                    </div>
                </div>
            </div>
        </article>
        <div class="side">
            <div runat="server" class="sf_cols">
                <div runat="server" class="sf_colsOut">
                    <div runat="server" class="sf_colsIn">
                    </div>
                </div>
            </div>
        </div>
        <div class="clear"></div>
        <div runat="server" class="sf_cols">
            <div runat="server" class="sf_colsOut">
                <div runat="server" class="sf_colsIn">
                </div>
            </div>
        </div>
    </section>

    The layout control is fine.  Sitefinity just didn't work in "live" if you specified the LayoutTemplate as the direct embedded resource "SitefinityWebApp.LayoutControls.Left.ascx" however it worked in editor and preview.

    It does however work in editor, preview, and live if you create a VirtualPathSettings->VirtualPath, in my case "~/Layouts/*", and then use that virtual path to the embedded resource "~/Layouts/SitefinityWebApp.LayoutControls.Left.ascx"

    The behavior is confusing, but I'm just glad its working now.
  8. Stanislav Velikov
    Stanislav Velikov avatar
    1113 posts
    Registered:
    23 Aug 2017
    03 Nov 2011
    Link to this post
    Hi Steve,

    If the template is embedded resource without a code file that calls it out of the assembly I think it will not work properly. If you don`t need backend logic for the layout does it suit your case to register it as user control? Here is more information on custom layout controls.

    All the best,
    Stanislav Velikov
    the Telerik team
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  9. Steve
    Steve avatar
    16 posts
    Registered:
    14 Jul 2010
    03 Nov 2011
    Link to this post
    I've read the link on custom layout controls(widgets) and that is exactly what I have done, except for item 5.  For me if I specified the direct path the my layout control "Sitefinity.LayoutControls.Left.ascx" I get the odd behavior of it working in editor and preview but broken in live.  However if I create a virtual path "~/Layouts/*" which is mapped to "SitefinityWebApp" and then specify the path as "~/Layouts/Sitefinity.LayoutControls.Left.ascx" it works.  That is what I was trying to explain.

    Additionally now that you mention it can you direct me to a code sample that does have backend logic that also does have containers.  Ideally I'd like to have an .ascx.cs file do the rendering work.

    thanks,
    Steve
  10. Stanislav Velikov
    Stanislav Velikov avatar
    1113 posts
    Registered:
    23 Aug 2017
    08 Nov 2011
    Link to this post
    Hi Steve,

    Sitefinity edit and preview use Sitefinity rendering engine, but live uses ASP.NET rendering engine.
    I have attached such layout control.
    To register the control add App_Code folder and place the code file in it. The template can remain in the root folder.
    To register the control
    ControlType: SitefinityWebApp.App_Code.Crisis, App_Code
    LayoutTemplate: ~/LayoutControlTemplate.ascx



    Greetings,
    Stanislav Velikov
    the Telerik team
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
10 posts, 0 answered