By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,397 Members | 2,515 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,397 IT Pros & Developers. It's quick & easy.

Problem dynamically loading User Control

P: n/a
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
Share this Question
Share on Google+
2 Replies


P: n/a
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

P: n/a
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.