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

Forums / Developing with Sitefinity / Cannot find template

Cannot find template

4 posts, 1 answered
  1. Anton
    Anton avatar
    6 posts
    Registered:
    09 Jun 2011
    09 Jun 2011
    Link to this post
    Hi,

    I'm developing custom widget for Sitefinity 4.1 and I follow the documentation. Somehow I encountered this error

    Server Error in '/' Application.

    Cannot find template "~/SFERegistration/ERegistrationModule.Resources.Views.EventItemList.ascx".

    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.ArgumentException: Cannot find template "~/SFERegistration/ERegistrationModule.Resources.Views.EventItemList.ascx".

    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:

    [ArgumentException: Cannot find template "~/SFERegistration/ERegistrationModule.Resources.Views.EventItemList.ascx".]
       Telerik.Sitefinity.Web.UI.ControlUtilities.GetTemplate(String virtualPath, String resourceFileName, Type assemblyInfo, String templateDeclaration, Boolean addChildrenAsDirectDescendants) +864
       Telerik.Sitefinity.Web.UI.ControlUtilities.GetControlTemplate(TemplateInfo info) +437
       Telerik.Sitefinity.Web.UI.ControlUtilities.GetTemplate(TemplateInfo info) +1056
       Telerik.Sitefinity.Web.UI.SimpleView.get_LayoutTemplate() +119
       Telerik.Sitefinity.Web.UI.SimpleView.get_Container() +21
       Telerik.Sitefinity.Web.UI.SimpleView.CreateChildControls() +46
       System.Web.UI.Control.EnsureChildControls() +102
       System.Web.UI.Control.PreRenderRecursiveInternal() +42
       System.Web.UI.Control.PreRenderRecursiveInternal() +175
       System.Web.UI.Control.PreRenderRecursiveInternal() +175
       System.Web.UI.Control.PreRenderRecursiveInternal() +175
       System.Web.UI.Control.PreRenderRecursiveInternal() +175
       System.Web.UI.Control.PreRenderRecursiveInternal() +175
       System.Web.UI.Control.PreRenderRecursiveInternal() +175
       System.Web.UI.Control.PreRenderRecursiveInternal() +175
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2496 

     I've changed the template path in my widget,

    private const string layoutTemplateName = "ERegistrationModule.Resources.Views.EventItemList.ascx";
     
    protected override string LayoutTemplateName
    {
        get { return null; }
    }
     
    public override string LayoutTemplatePath
    {
        get
        {
            var path = ERegistrationModule.ERegistrationVirtualPath + layoutTemplateName;
            return path;
        }
        set
        {
            base.LayoutTemplatePath = value;
        }
    }

    I've also set the virtual path in my module class
    public static string ERegistrationVirtualPath = "~/SFERegistration/";
     
    public override void Install(SiteInitializer initializer)
    {
        base.Install(initializer);
        InstallCustomVirtualPaths(initializer);
    }
     
    private void InstallCustomVirtualPaths(SiteInitializer initialzer)
    {
        var virtualPathConfig = initialzer.Context.GetConfig<VirtualPathSettingsConfig>();
        var moduleVirtualPathConfig = new VirtualPathElement(virtualPathConfig.VirtualPaths)
        {
            VirtualPath = ERegistrationModule.ERegistrationVirtualPath + "*",
            ResolverName = "EmbeddedResourceResolver",
            ResourceLocation = "ERegistrationModule"
        };
        if (!virtualPathConfig.VirtualPaths.ContainsKey(ERegistrationModule.ERegistrationVirtualPath + "*"))
            virtualPathConfig.VirtualPaths.Add(moduleVirtualPathConfig);
    }
    Any help would be appreciated.
    Thanks,


    Anton
  2. Ivan Dimitrov
    Ivan Dimitrov avatar
    16072 posts
    Registered:
    12 Sep 2017
    09 Jun 2011
    Link to this post
    Hi Anton,

    1. Check whether the VirtualPathSettingsConfig is updated through the configurations ( Administration>> Settings >> Advanced;)

    2. Make sure that your template is built as an embedded resource

    3.ResourceLocation is set correctly. Generally is set to the name of the class library like in the default modules Telerik.Sitefinity.Resources

    Kind regards,
    Ivan Dimitrov
    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
    Answered
  3. Anton
    Anton avatar
    6 posts
    Registered:
    09 Jun 2011
    09 Jun 2011
    Link to this post
    Hi Ivan,

    Thanks for you reply.

    I've checked the virtual path and my path is registered (~/SFERegistration/*).
    The build action of my .ascx is also already set to Embedded Resource, and my ResourceLocation is  set to my class library name (ERegistrationModule).
    Btw, I didn't create resource class as in documentation because I don't think that my module will be localized,
    so I don't set all the "ResourceClassId" properties. Does this cause the error?
    So far it works in backend.

    Any other suggestion?

    Regards,

    Anton
  4. Anton
    Anton avatar
    6 posts
    Registered:
    09 Jun 2011
    10 Jun 2011
    Link to this post
    The problem is resolved now. Apparently I put the widget's class (EventItemList) in the same folder as its view (EventItemList.ascx) and they have the same name & namespace, then EmbeddedResourceResolver can't find the .ascx.

    Regards,

    Anton
4 posts, 1 answered