【问题标题】:ASP.NET Custom ControlsASP.NET 自定义控件
【发布时间】:2010-09-23 07:29:11
【问题描述】:

您如何创建自定义控件(不是 ASCX 控件),更重要的是,如何在您的项目中使用它?我不想为其创建单独的项目或将其编译为 DLL

【问题讨论】:

    标签: asp.net custom-server-controls


    【解决方案1】:

    服务器控件应编译为 DLL。没有理由害怕在您的项目中添加额外的程序集,这有助于创建良好的项目组织。

    ASP.NET 服务器控件实际上是程序集中的自定义类。它们没有关联的“ascx”标记文件。

    要使用 ASP.NET 服务器控件,您需要告诉 ASP.NET 在哪里寻找它的类。

    首先,创建一个类库项目并将其添加到您的解决方案中,我将调用我的“CustomControls.dll”。

    在那里,添加一个简单的类作为您的 web 控件:

    public class Hello : System.Web.UI.WebControl
    {
        public override Render(HtmlTextWriter writer)
        {
            writer.Write("Hello World");
            base.Render(writer);
        }
    }
    

    构建您的项目,并将其添加为对您的主 Web 项目的引用。

    现在,在你想使用这个控件的 ASPX 页面中,你需要注册它,所以在页面指令之后添加这个作为 aspx 中的第一行:

    <%@ Register TagPrefix="Example" Namespace="CustomControls" Assembly = "CustomControls" %>
    

    现在,您应该可以使用一个名为 的控件。在智能感知中显示可能需要一分钟。

    【讨论】:

    • 非常感谢!这不仅解决了我的问题,还帮助我作为开发人员更加成熟。
    【解决方案2】:

    为控件创建类并构建解决方案。如果一切顺利,控件现在应该可以在工具箱上使用。

    有时 VS 不会更新工具箱。如果发生这种情况,请将 Register 指令添加到页面:

    <%@ Register Assembly="NAME_OF_THE_ASSEMBLY" Namespace="NAMESPACE_OF_THE_CUSTOM_CONTROL" TagPrefix="cc1" %>
    

    然后只需使用页面上的控件:

    <cc1:mycustompanel id="MyCustomPanel1" runat="server"><asp:TextBox id="TextBox1" runat="server"></asp:TextBox></cc1:mycustompanel>
    

    【讨论】:

      【解决方案3】:

      如果你不想要一个*.ascx 文件,你不想要一个单独的项目,你不想要一个*.dll 文件,你认为还剩下什么?代码必须存在于某个地方。

      【讨论】:

        【解决方案4】:

        您提到您希望避免创建单独的项目。正如其他回复所表明的那样,简单地创建一个新项目来存储您的自定义控件并引用它更为常见。但是,可以使用常规语法注册在同一项目中定义的控件:

        <%@ Register TagPrefix="Example" Namespace="CustomControls" Assembly="CustomControls" %>
        

        “程序集”是控件和页面所在的程序集。如果您使用的是 Web 应用程序项目,而不是网站,这会更容易。

        【讨论】:

          猜你喜欢
          • 2011-06-15
          • 2011-12-20
          • 2012-06-07
          • 1970-01-01
          • 1970-01-01
          • 2011-02-21
          • 2010-11-12
          • 2010-09-09
          相关资源
          最近更新 更多