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

Forums / Developing with Sitefinity / Image selector on custom widget edit designer

Image selector on custom widget edit designer

3 posts, 0 answered
  1. Brad H
    Brad H avatar
    9 posts
    Registered:
    20 Aug 2009
    25 Aug 2011
    Link to this post
    I've been having lots of problems getting this to work.

    I have a custom user control that has been implemented into Sitefinity as a custom widget.  This is called MainTabs.ascx.  I am trying to customize the edit designer window that users will see so when they click "Edit" on the widget, they will see a text field and an image selector.

    I have used some code found here and the project builds fine.  However, when I go to view my page in Edit mode within Sitefinity, I get the following error:  "'SitefinityWebApp.UserControls.MainTabs' is not allowed here because it does not extend class 'System.Web.UI.UserControl'. "

    I understand what this means.  If I'm extending the SimpleView in my user control code behind, then I cannot inherit UserControl.  But if I don't inherit UserControl, then it won't display.

    So, how can I make a custom widget user control editable using the SimpleView?

    Here is my current code: MainTabs.ascx.cs
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Telerik.Sitefinity.Web.UI;
    using Telerik.Sitefinity.Web.UI.ControlDesign;
    using Telerik.Sitefinity.Modules.Pages.Web.UI;
    using Telerik.Sitefinity.Modules.Libraries.Images;
    using Telerik.Sitefinity;
     
    namespace SitefinityWebApp.UserControls
    {
        [ControlDesigner(typeof(SitefinityWebApp.UserControls.Designers.MainTabsDesigner))]
        public partial class MainTabs : SimpleView
        {
            protected Image mainImageLeft
            {
                get { return Container.GetControl<Image>("mainImageLeft", true); }
            }
     
            protected override void InitializeControls(GenericContainer container)
            {
                if (ImageId.ToString().Length > 1)
                {
                    Telerik.Sitefinity.Libraries.Model.Image image = App.WorkWith().Image(ImageId).Get();
                    mainImageLeft.ImageUrl = image.MediaUrl;
                }
            }
     
            protected override string LayoutTemplateName
            {
                get { return "SitefinityWebApp.UserControls.MainTabs.ascx"; }
            }
     
            private Guid _imageId;
            public Guid ImageId
            {
                get { return this._imageId; }
                set { this._imageId = value; }
            }
        }
    }
  2. Svetoslav Petsov
    Svetoslav Petsov avatar
    456 posts
    Registered:
    24 Sep 2012
    29 Aug 2011
    Link to this post
    Hello Brad H,

     Your control shouldn't have an ascx.cs file, but just an .ascx file which is the template of the control and a .cs file which is the control's main class. The code you have provided is correct, the only thing you need to do is change the directive of your .ascx file to just:

    <%@ Control Language="C#"  %>
    Then remove the ascx.cs files and add your code to a MainTab.cs class which will inherit from Simple View. The rest should work just fine. Kind regards,
    Svetoslav Petsov
    the Telerik team

    Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>

  3. Saad
    Saad avatar
    98 posts
    Registered:
    10 Oct 2008
    03 Sep 2011
    Link to this post
    Hello Brad H,

    Path to the template LayoutTemplateName should be a template file, that is .ascx only. Which means your MainTabs class should be just a .cs (without any designer.cs and .ascx). Designers and templates loosely coupled!

    Please see this documentation.
3 posts, 0 answered