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

Forums / Bugs & Issues / The ViewMode is not defined for this control in Sitefinity 3.7

The ViewMode is not defined for this control in Sitefinity 3.7

2 posts, 0 answered
  1. warfee
    warfee avatar
    27 posts
    Registered:
    10 Aug 2007
    28 Sep 2009
    Link to this post
    I am using the pluggable contacts module as an example to create a new module for SiteFinity 3.7. I am getting the following error on doing a cancel or using the back button (to go back to the seasons listing) on my SeasonItemNew view.

    Any help would be appreciated on this matter.
    The ViewMode "SeasonItemsList`1" is not defined for this control. 
    Description:An unhandled exception occurred during the execution of the current webrequest. Please review the stack trace for more information about the error andwhere it originated in the code.  
     
    Exception Details:System.ArgumentException: The ViewMode "SeasonItemsList`1" is not definedfor this control. 



    See my SeasonItemEdit view code:

     Public Class SeasonItemEdit(Of THost As SeasonsView) 
            Inherits ViewModeControl(Of THost) 
     
            Private _season As ISeason 
            Private _cancelUrl As StringString = String.Empty 
            Private Const SeasonItemEditViewTemplateName As String = "ClixSoftware.Football.SeasonItemEdit.ascx" 
     
     
            ''' <summary> 
            ''' Gets or sets the layout template path. 
            ''' </summary> 
            ''' <value>The layout template path.</value> 
            <WebSysTemplate(SeasonItemEdit(Of THost).SeasonItemEditViewTemplateName, "SeasonListViewTemplateName_Template_Desc", _ 
                            "/Football/", False, "2009-09-26")> _ 
            Public Overrides Property LayoutTemplatePath() As String 
                Get 
                    Return MyBase.LayoutTemplatePath 
                End Get 
                Set(ByVal value As String) 
                    MyBase.LayoutTemplatePath = value 
                End Set 
            End Property 
     
     
            ''' <summary> 
            ''' Gets the name of the layout template. 
            ''' </summary> 
            ''' <value>The name of the layout template.</value> 
            Protected Overrides ReadOnly Property LayoutTemplateName() As String 
                Get 
                    Return SeasonItemEdit(Of THost).SeasonItemEditViewTemplateName 
                End Get 
            End Property 
     
            ''' <summary> 
            ''' Gets the manager. 
            ''' </summary> 
            ''' <value>The manager.</value> 
            Public Overridable ReadOnly Property Manager() As FootballManager 
                Get 
                    Return Me.Host.Manager 
                End Get 
            End Property 
     
            ''' <summary> 
            ''' Gets the name of the provider. 
            ''' </summary> 
            ''' <value>The name of the provider.</value> 
            Public Overridable ReadOnly Property ProviderName() As String 
                Get 
                    Return Me.Manager.Provider.Name 
                End Get 
            End Property 
     
            ''' <summary> 
            ''' Gets or sets the title. 
            ''' </summary> 
            ''' <value>The title.</value> 
            Public Overrides Property Title() As String 
                Get 
                    If Not Me.IsNewItem Then 
                        Return Me.season.Title 
                    Else 
                        Return My.Resources.NewSeason 
                    End If 
     
                End Get 
                Set(ByVal value As String) 
                    MyBase.Title = value 
                End Set 
            End Property 
     
            ''' <summary> 
            ''' Gets the season. 
            ''' </summary> 
            ''' <value>The season.</value> 
            Private ReadOnly Property Season() As ISeason 
                Get 
                    If _season Is Nothing AndAlso Not Me.IsNewItem Then 
                        _season = Me.Manager.GetSeason(Me.DataItemId) 
                    End If 
     
                    Return _season 
                End Get 
            End Property 
     
     
            ''' <summary> 
            ''' Gets the additional template key. 
            ''' </summary> 
            ''' <value>The additional template key.</value> 
            Protected Overrides ReadOnly Property AdditionalTemplateKey() As String 
                Get 
                    Return Me.Host.Manager.Provider.Name 
                End Get 
            End Property 
     
            ''' <summary> 
            ''' Gets the season editor control. 
            ''' </summary> 
            ''' <value>The season editor control.</value> 
            Protected Overridable ReadOnly Property SeasonEditorControl() As SeasonEditor 
                Get 
                    Return MyBase.Container.GetControl(Of SeasonEditor)("seasonEditor", True) 
                End Get 
            End Property 
     
            ''' <summary> 
            ''' Gets the back button. 
            ''' </summary> 
            ''' <value>The back button.</value> 
            Protected Overridable ReadOnly Property BackButton() As HyperLink 
                Get 
                    Return MyBase.Container.GetControl(Of HyperLink)("backButton", True) 
                End Get 
            End Property 
     
            ''' <summary> 
            ''' Initializes the controls. 
            ''' </summary> 
            ''' <param name="viewContainer">The view container.</param> 
            Protected Overrides Sub InitializeControls(ByVal viewContainer As System.Web.UI.Control) 
                MyBase.InitializeControls(viewContainer) 
                CreateSeasonEditorView() 
            End Sub 
     
     
            ''' <summary> 
            ''' Creates the season editor view. 
            ''' </summary> 
            Protected Overridable Sub CreateSeasonEditorView() 
     
                'defines the behavior of the ContactEdior button 
                MeMe.SeasonEditorControl.ProviderName = Me.ProviderName 
     
                If Not IsNewItem Then 
     
                    MeMe.SeasonEditorControl.SeasonId = Me.DataItemId 
                End If 
     
                'To do change back to SeasonItemsList(of THost) 
                Me.SeasonEditorControl.CancelUrl = CreateHostViewCommand(Of SeasonItemsList(Of THost))() 
                AddHandler Me.SeasonEditorControl.Saved, AddressOf SeasonEditorControl_Saved 
     
                'defines the behavior of the backbutton 
                Me.BackButton.NavigateUrl = CreateHostViewCommand(Of SeasonItemsList(Of THost))() 
            End Sub 
     
            ''' <summary> 
            ''' Gets a value indicating whether this instance is new item. 
            ''' </summary> 
            ''' <value> 
            ''' <c>true</c> if this instance is new item; otherwise, <c>false</c>
            ''' </value> 
            Protected ReadOnly Property IsNewItem() As Boolean 
                Get 
                    Return Me.DataItemId = Guid.Empty 
                End Get 
            End Property 
     
            ''' <summary> 
            ''' Handles the Saved event of the SeasonEditorControl control. 
            ''' </summary> 
            ''' <param name="e">The <see cref="System.EventArgs" /> instance containing the event data.</param> 
            Private Sub SeasonEditorControl_Saved(ByVal e As EventArgs) 
                NavigateHostCommand(Of SeasonItemsList(Of THost))(Nothing, My.Resources.SeasonSavedMessage) 
            End Sub 
     
     
        End Class 
     
    "SeasonsView" view 
        ''' <summary> 
        ''' Container view for all season related views 
        ''' </summary> 
        ''' <remarks></remarks
        Public Class SeasonsView 
            Inherits ViewModeControl(Of FootballControlPanel) 
     
     
            ''' <summary> 
            ''' Gets the manager. 
            ''' </summary> 
            ''' <value>The manager.</value> 
            Public Overridable ReadOnly Property Manager() As FootballManager 
                Get 
                    Return Me.Host.Manager 
                End Get 
            End Property 
     
            ''' <summary> 
            ''' Gets the additional template key. 
            ''' </summary> 
            ''' <value>The additional template key.</value> 
            Protected Overrides ReadOnly Property AdditionalTemplateKey() As String 
                Get 
                    Return Me.Host.Manager.Provider.Name 
                End Get 
            End Property 
     
            Protected Overrides Sub CreateViews() 
                AddView(Of SeasonItemsList(Of SeasonsView))("SeasonItemsList", "SeasonItemList_Title", "SeasonItemList_Description", "all", My.Resources.ResourceManager) 
                AddView(Of SeasonItemEdit(Of SeasonsView))("SeasonItemEdit", "SeasonItemEdit_Title", "SeasonItemEdit_Description", "all", My.Resources.ResourceManager) 
                AddView(Of SeasonItemNew)("SeasonItemNew", "SeasonItemNew_Title", "SeasonItemNew_Description", "all", My.Resources.ResourceManager) 
            End Sub 
     
     
     
        End Class 
     

  2. Ivan Dimitrov
    Ivan Dimitrov avatar
    16072 posts
    Registered:
    25 Nov 2016
    28 Sep 2009
    Link to this post
    Hello warfee,

    The problem is related to the CreateSeasonEditorView method where you are setting the navigate Url of your back and cancel button. The HostCommands are not correct for the architecture of your module and the view cannot be found.

    Below is a sample code:

    public class AllViews: ViewModeControl<MyModuleControlPanel> 
        { 
             
            protected override void CreateViews() 
            { 
                 ... 
                   ... 
                AddView<ModuleItemEdit<AllViews>>(); 
                AddView<ListAllItems<AllViews>>();
            } 
     

    Then under InitializeControls you should set the NavigateUrl to the link as shown below

    button.NavigateUrl = this.CreateHostViewCommand<ListAllItems<AllViews>>(this.itemID.ToString()); 

    I hope this helps.

    Sincerely yours,
    Ivan Dimitrov
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
2 posts, 0 answered