In my .aspx page I have;
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" AspCompat="True" %>
<%@ Register src="Modules/Content.ascx" tagname="Content" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="Modulecontainer" runat="server"></asp:PlaceHolder>
</div>
</form>
</body>
</html>
In my aspx.vb I have;
Try
Dim loadmodule As UserControl
loadmodule = Me.LoadControl("~/modules/content.ascx")
Modulecontainer.Controls.Add(loadmodule)
Catch ex As Exception
Response.Write(ex.ToString & "<br />")
End Try
The result is an empty placeholder and no errors.
Thanks a lot for any assistance
P.S after Fat_Tony’s answer I changed the code to;
Try
Dim loadmodule As ASP.ContentModule
loadmodule = CType(LoadControl("~\Modules\Content.ascx"), ASP.ContentModule)
Modulecontainer.Controls.Add(loadmodule)
Catch ex As Exception
Response.Write(ex.ToString & "<br />")
End Try
But still no results unfortunately.
Rather than declaring your UserControl as type “Control”, declare it as the Class Name you specified in your UserControl.ascx file:
So in your code-behind on the .aspx page:
More info available on MSDN.
EDIT: Check the code-behind file for your user control and take note of the namespace and class name that are in there. When I created my user control, it was automatically added to a namespace which contained the folder name as well as the application namespace.
Then, in your .aspx.vb, replace “ASP.ContentModule” with “Namespace.ClassName” from your .ascx.vb file. Also, make sure you’re still calling the Add method on your placeholder.
My example’s in C# but I can put up in vb if you need. My application was conveniently named “Tester”.
ASCX code-behind:
ASPX code-behind: