Click here to Skip to main content
Web Development » ASP.NET » Howto     Intermediate License: The Code Project Open License (CPOL)

HOW TO REDIRECT TO SPECIFIC CONTROL OF SPECIFIC TAB IN DOTNETNUKE

By Prashant Lakhlani

HOW TO REDIRECT TO SPECIFIC CONTROL OF SPECIFIC TAB IN DOTNETNUKE
C#, Javascript, CSS, HTML.NET2.0, ASP, ASP.NET, Ajax, Dev
Posted:24 Feb 2008
Updated:24 Feb 2008
Views:8,059
Bookmarked:15 times
Unedited contribution
6 votes for this article.
Popularity: 1.73 Rating: 2.22 out of 5
3 votes, 50.0%
1

2

3
1 vote, 16.7%
4
2 votes, 33.3%
5

How to redirect to specific control of a specific tab in DotNetNuke

Hi friends. DotNetNuke is a well known open source CMS. When I go through the forums of the website, there exists a common question many times by different developers that how to redirect to a specific control at the specific tab in DotNetNuke. I will try to help the new developers getting answer of this question.

Background

As every newbie starting the DotNetNuke development has always a question like this in their lives. The basic idea behind doing this is:

  • We need TABID for redirection to specific TAB. we will pass a query string parameter along with the redirect URL to tell which control to load.
  • At the default control of that specific module, we will just read the query string and load .ASCX control accordingly into a placeholder control.

I’m trying to make sure how easily we can do this using an example.

Example

Create a default control

Create a control called _default in your root directory which looks like this:

_DEFAULT.ASCX


<%@ Control Language="C#" AutoEventWireup="true" CodeFile="_Default.ascx.cs" Inherits="PMJ.Modules.Contact._Default" %>
<table id="Table1" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
    <tr>
        <td valign="top" align="center">
            <p align="center">
                <asp:PlaceHolder ID="phMain" runat="server"></asp:PlaceHolder>
            </p>
        </td>
    </tr>
    <tr>
        <td valign="top" align="center">
            <asp:Label ID="lblModuleSettings" runat="server" resourcekey="lblModuleSettings"
                ForeColor="Red" Visible="False">Please update module settings...contact Portal Admin.</asp:Label></td>
    </tr>
</table> 

_DEFAULT.ASCX.CS


partial class _Default : PortalModuleBase
    {
        private string m_ModuelControl = "Contacts.ascx";//1. Default Module Control to load
        protected void Page_Load(object sender, EventArgs e)
        {
            LoadModuleControl(); // Call LoadModuleControl Method to load a specific control
        }
        private void LoadModuleControl()
        {
            if (Request.QueryString["mctl"] != null)//3. Read control name from querystring
            {
                 m_ModuelControl = Request.QueryString["mctl"].ToString() + ".ascx";
            }
             //4. check authorization here if you want, otherwise comment out or skip this step
            switch (m_ModuelControl)
            {
                case "AddContact.ascx":
                    //5. check if user is authorized otherwise redirect to access denied page
                    //    Response.Redirect(Globals.NavigateURL("Access Denied"), true);
                    break;
                case "ContactNotes.ascx":
                    break;
            }
            //6. Load a specific control
            PortalModuleBase objPortalModuleBase = (PortalModuleBase)LoadControl(m_ModuelControl);
            objPortalModuleBase.ModuleConfiguration = ModuleConfiguration;
            objPortalModuleBase.ID = System.IO.Path.GetFileNameWithoutExtension(m_ModuelControl);
            phMain.Controls.Add(objPortalModuleBase);
        }
    }

Quick expaination of the code

So let’s step by step go through the details of the code.

  1. If you look at the bold code in _default.ascx, <asp:PlaceHolder ID="phMain" runat="server"></asp:PlaceHolder>, that is a place holder control of asp.net in which we will load another .ascx control at runtime.
  2. Now if you look at the code in _default.aspx.cs you can find the steps in the comment at various places of the code.
  3. Use a private variable to hold the control name into it. Initialize it with the default control that we will load if no query string parameter is found in the URL.
  4. Initialize the variable with the query string parameter if it is specified in the URL
  5. Include the switch statement for authorization if you need to authorize the user, Otherwise put that code in comment
  6. Load the specific control in the phMain placeholder of the default control.

So the last thing to do is, When you redirect from any tab, just do this:

TabController objtab = new TabController();
TabInfo objtabinfo = new TabInfo();
objtabinfo = objtab.GetTabByName("Contacts", PortalId);
Response.Redirect(Globals.NavigateURL(objtabinfo.TabID, "", "mctl=" + "ContactNote")));

Remember that for this code to work: • You need a tab called “Contacts“ in your portal • You need a control called ContactNote.ascx in your module • You need to include the namespace DotNetNuke.Entities.Tabs at the top of your page where you write the redirect code above. Wish you a Happy coding with DotNetNuke.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Prashant Lakhlani


Member
I'm Computer Engineer with two years experiance with asp.net 2.0 and all the related microsoft technologies like ajax, vb.net, c#, html, dhtml, javascript, css, skinning etc. I've done lots of research assignements and love to do so. Please feel free to contact me here.

Tech Lead

<img src="http://www.FirstPhera.com/images/logo.gif"/>

Occupation: Web Developer
Location: India India

Discussions and Feedback

Comment 1 message have been posted for this article. Visit http://www.codeproject.com/KB/aspnet/DOTNETNUKE_NAVIGATION.aspx to post and view comments on this article, or click here to get a print view with messages.

PermaLink | Privacy | Terms of Use
Last Updated: 24 Feb 2008
Editor:
Copyright 2008 by Prashant Lakhlani
Everything else Copyright © CodeProject, 1999-2010
Web20 | Advertise on the Code Project