Search code examples
c#asp.netdllcustom-controlsascx

Custom web control without a DLL


I am trying to inherit a dropdownlist. I don't want to compile it and put into a DLL. I want to reference it from the same project, and that component will be used by two other pages, only.

The code-behind is very basic:

.cs page:

namespace UNS
{
    public partial class UDropDown : DropDownList
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

.ascx page

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UDropDownList.ascx.cs" Inherits="UNS.UDropDown" %>

I want to give reference to this in another .aspx page by registering it like:

.aspx page

<%@ Register Src="~/UDropDownList.ascx" TagPrefix="UTP" TagName="UTN" %>

The question is, when I want to put it on the page, if I write

<UTP: ...  

I cannot get auto complete options, etc. It doesn't appear.

But I can refer to it within other .cs pages, by simply typing UDropDown.

What's the problem?


Solution

  • The following solved the problem:

    How to use a Subclassed Control on an ASP.NET Page?

    I used web-config to register my control.

    web.config

    <pages theme="UTheme">
      <controls>
        <add tagPrefix="UTP" namespace="UNS" assembly="UNS" />
      </controls>
    </pages>
    

    Created a new class, not a partial class:

    UDropDownList

    namespace UNS
    {
        public class UDropDownList : DropDownList
        {
        }
    }
    

    On the .aspx page, do refer to it like:

    <UTP:UDropDownList runat="server" ID="dd" runat="server"
                    ClientIDMode="Static" AutoPostBack="false">
    </UTP:UDropDownList>