I’ve created a UserControl in VB.NET and added it to a form. But it looks like I’ve done it wrong as it is underlined with the message:
ctlDropDownis not a known element. This can occur if
there is a compilation error in the Web site or theweb.configfile is missing.
When I try to run it I get the following error:
myControlis not allowed here because it does not extend classSystem.Web.UI.UserControl.
Here’s the code:
control itself…
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="ctlDropDown.ascx.vb" Inherits="myProj.UserControls.ctlDropDown" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<asp:textbox id="txtValue" style="Z-INDEX: 101; LEFT: -100px; POSITION: absolute; TOP: -200px"
tabIndex="0" runat="server"></asp:textbox><asp:panel id="pnlMain" style="scrolling: no" Width="100%" runat="server" HorizontalAlign="Right"
BorderWidth="1px" BorderStyle="Solid">
<TABLE cellSpacing="0" cellPadding="0" width="100%" border="0">
<TR>
<TD vAlign="top" width="100%">
<asp:TextBox id="txtData" tabIndex="9500" runat="server" Width="100%" Height="100%" BorderStyle="None"
BorderWidth="0px"></asp:TextBox></TD>
<TD vAlign="top">
<asp:ImageButton id="imgDownButton" runat="server" BackColor="ControlLight" BorderStyle="Outset"
BorderWidth="2px" ImageUrl="../Arrow.gif"></asp:ImageButton></TD>
</TR>
</TABLE>
</asp:panel><asp:listbox id="lstList" tabIndex="0" Height="205px" Width="100%" runat="server" Visible="False"></asp:listbox><asp:textbox id="txtActiveElementClientID" style="Z-INDEX: 100; LEFT: -100px; POSITION: absolute; TOP: -200px"
tabIndex="0" runat="server"></asp:textbox>
on the form…
<%@ Register TagPrefix="uc1" TagName="ctlDropdown" Src="../UserControls/ctlDropDown.ascx" %>
and…
<table>
<tr>
<TD style="POSITION: absolute;">
<uc1:ctlDropDown ID="ctlDropDown1" runat="server"></uc1:ctlDropDown>
</TD>
</tr>
</table>
You’ve shown us the markup for your user control. However, there should also be a file which has the actual class for that object. Your markup references it here:
This file should contain a class, referenced in your markup here:
This class should extend (inherit from) the class
System.Web.UI.UserControl. Something like:(Note that the class may be marked as a “partial” class, depending on how the user control was created.)
This is needed by the compiler more so than the markup. The actual controls, user controls, etc. throughout an ASP .NET web application all boil down to classes interacting with each other. Without a class backing the markup, it’s not known to the runtime and can’t be used.