我想对ASP.NET中的内置DropDownList进行子类化,以便可以向其中添加功能并在页面中使用它。我尝试使用UserControl进行此操作,但发现它没有公开内部的DropDownList(从逻辑上讲,我猜是这样)。我已经用谷歌搜索了答案,但找不到任何东西。

我已经写了实际的类,可以从DropDownList继承子类,但是我无法在ASP.NET页中注册该文件并在源代码 View 中使用它。也许我缺少类里面的一些属性?

有任何想法吗?

最佳答案

您想在自定义控件中扩展DropDownList,而不是在用户控件中扩展。

创建一个名为MyLibrary的新类库项目。

添加一个名为MyDropDownList.cs的类

namespace My.Namespace.Controls
{
[ToolboxData("<{0}:MyDropDownList runat=\"server\"></{0}:MyDropDownList>")]
public class MyDropDownList: DropDownList
{
    // your custom code goes here
    // e.g.
    protected override void  RenderContents(HtmlTextWriter writer)
    {
        //Your own render code
    }
}
}

编译库后,可以在Web应用程序中添加对该库的引用。

在您的web.config文件中添加一个tagprefix
    <add tagPrefix="my" namespace="My.Namespace.Controls" assembly="MyLibrary" />

那应该允许您将其添加到aspx/ascx的
<my:MyDropDownList ID="myDDl" runat="server">
    ...
</my:MyDropDownList>

10-08 02:14