472,102 Members | 1,083 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,102 software developers and data experts.

Problem dynamically loading User Control

I'm trying to dynamically load a user control using on the .NET
framework (not Visual Studio).

The control was designed in Visual Studio and is named: Disable.ascx
The first line is:
<%@ Control Language="c#" className="Disable1" src="Disable.ascx.cs" %>

The host page for this control is named UserControl.aspx.
The first 2 lines are:
<%@ Reference control="Disable.ascx" %>
<%@ Page language="c#" src="UserControl.aspx.cs" %>

The code-behind for the host page is called: UserControl.aspx.cs

The User Control is loaded from this code in the code-behind:
private void Page_Load(object sender, System.EventArgs e)
{
Disable1 uc = (Disable1) Page.LoadControl("Disable.ascx");
Panel1.Controls.Add(uc);
}

I always get this error when I try to bring up the host page:
CS0246: The type or namespace name 'Disable1' could not be found (are
you missing a using directive or an assembly reference?)

and it highlights this line of code:
Disable1 uc = (Disable1) Page.LoadControl("Disable.ascx");

How can I get it to dynamically load the user control from the code
behind file of the host page?

Thanks,
Eric Engler


Nov 18 '05 #1
2 2377
By specifying the class name for the user control, you indicate what should
be used during dynamic compilation of the aspx page. This class name does
not exist until this page is compiled on the server, so your code behind
(compiled before you even deploy) is completely unaware of the existence of
this class. Just take out the casts and insert it as a Control, or else cast
it specifically to the class name you are loading from.

--
Chris Jackson
Software Engineer
Microsoft MVP - Windows Client
Windows XP Associate Expert
--
More people read the newsgroups than read my email.
Reply to the newsgroup for a faster response.
(Control-G using Outlook Express)
--

<Eric> wrote in message news:eM*************@TK2MSFTNGP12.phx.gbl...
I'm trying to dynamically load a user control using on the .NET
framework (not Visual Studio).

The control was designed in Visual Studio and is named: Disable.ascx
The first line is:
<%@ Control Language="c#" className="Disable1" src="Disable.ascx.cs" %>

The host page for this control is named UserControl.aspx.
The first 2 lines are:
<%@ Reference control="Disable.ascx" %>
<%@ Page language="c#" src="UserControl.aspx.cs" %>

The code-behind for the host page is called: UserControl.aspx.cs

The User Control is loaded from this code in the code-behind:
private void Page_Load(object sender, System.EventArgs e)
{
Disable1 uc = (Disable1) Page.LoadControl("Disable.ascx");
Panel1.Controls.Add(uc);
}

I always get this error when I try to bring up the host page:
CS0246: The type or namespace name 'Disable1' could not be found (are
you missing a using directive or an assembly reference?)

and it highlights this line of code:
Disable1 uc = (Disable1) Page.LoadControl("Disable.ascx");

How can I get it to dynamically load the user control from the code
behind file of the host page?

Thanks,
Eric Engler

Nov 18 '05 #2
On Thu, 12 Feb 2004 11:43:40 -0500, "Chris Jackson"
<chrisjATmvpsDOTorgNOSPAM> wrote:
By specifying the class name for the user control, you indicate what should
be used during dynamic compilation of the aspx page. This class name does
not exist until this page is compiled on the server, so your code behind
(compiled before you even deploy) is completely unaware of the existence of
this class. Just take out the casts and insert it as a Control, or else cast
it specifically to the class name you are loading from.

--
Chris Jackson
Software Engineer
Microsoft MVP - Windows Client
Windows XP Associate Expert


Thanks much Chris - you gave me the missing link.

In the codebehind of the main page I tried casting the control to
"Disable" instead of "Disable1". But that didn't work because the
codebehind file of my main page didn't have a referance to the
codebehind of the control, so it didn't know "Disable".

So I made a batch file to compile the codebehind for the control and
put the DLL in the bin dir. Then I made a batch file to compile the
codebehind of the main page and referance the DLL for the control.

Then I took out the "SRC=" attributes in both the .ascx and the .aspx,
since I had compiled them both to DLLs.

Then it worked!

Eric
Nov 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by marshal | last post: by
1 post views Thread by Sundaresan | last post: by
1 post views Thread by José Joye | last post: by
5 posts views Thread by Andrew Robinson | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.