Problem dynamically loading User Control

E

Eric

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
 
C

Chris Jackson

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.
 
E

Eric

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top