ASP.NET C#中的自定义控件

gee*_*vee 10 asp.net custom-controls parse-error extending-classes

我创建了一个简单的自定义控件,它只从Literal控件继承,并且还没有任何扩展,代码是空的.

命名空间:CustomControls

类名:Literal:System.Web.UI.WebControls.Literal

我接下来要做的是在aspx页面中注册此控件,如下所示:

<%@ Register TagPrefix="web" Namespace="CustomControls" %>
Run Code Online (Sandbox Code Playgroud)

(我在一些教程中读到这是注册它的方法之一,除了web.config等)

毕竟,对我来说没有任何意义,更糟糕的是 - 当我尝试运行带有控件的页面时,我得到一个解析错误'未知服务器标签:web'.

我使用'创建新项目'而不是新网站,以防需要此信息.

可能是我的问题?

提前致谢.

Pet*_*ter 27

这是我如何做到的,一步一步从无到有.第一种方法使用第二个项目/程序集.对于App_code版本向下滚动.

Web应用程序项目方法

  1. 创建一个新的ASP.Net Web应用程序.记下这个名字,我的名字叫做WebApplication2.如果您已有可能的现有Web应用程序,请双击项目的属性部分并选中"程序集名称"属性,记下它.
  2. 在名为Literal.cs的Web应用程序中创建一个新类
  3. 为类防御添加类似于以下的代码:

    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将以下寄存器标记添加到aspx页面的顶部

    <%@ Register assembly ="WebApplication2"namespace ="CustomControls"tagprefix ="web"%>

如果您的程序集名称不同,请在此处进行更改.我注意到,当我在VB.Net中执行此操作时,命名空间是WebApplication1.CustomControls,而不仅仅是像C#那样的CustomControls,有点奇怪.

  1. 将新控件添加到您的页面:

    <web:Literal ID ="Literal1"runat ="server"Text ="test"/>

单独的项目方法

  1. 创建一个新的空网站(ASP.Net).
  2. 将名为CustomControls的新ASP.Net服务器控件库添加到解决方案中.
  3. 将一个新类添加到名为Literal的新项目中(我正在使用C#,因此我的文件名为Literal.cs).下面是我的超级基本代码,我认为应该与问题中描述的代码相匹配.

    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将CustomControls项目的引用添加到您的网站.

  5. 将程序集注册添加到aspx页面的顶部:

    <%@ Register assembly ="CustomControls"namespace ="CustomControls"tagprefix ="web"%>

  6. 将新控件实例添加到您的页面:

    <web:Literal ID ="Literal1"runat ="server"Text ="test"/>

在App_Code方法中

  1. 创建一个新的空网站(ASP.Net).
  2. 将新类添加到App_Code文件夹Literal2(我正在使用C#,因此我的文件名为Literal2.cs).下面是我的超级基本代码,我认为应该与问题中描述的代码相匹配.我将其称为2,以便您可以将此与上述方法结合使用而不会出现编译错误

    namespace CustomControls
    {
        public class Literal2 : System.Web.UI.WebControls.Literal
        {
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过在顶部添加以下行,在aspx页面中注册app_code的程序集/命名空间

    <%@ Register Namespace ="CustomControls"Assembly ="__ code"tagprefix ="web"%>

  4. 将新控件的实例添加到您的页面:

    <web:Literal2 ID ="literal2"runat ="server"Text ="test2"/>

我使用visual studio对它进行了测试,这对我来说都很好.