asp.net在网站中添加自定义控件

时间:2011-08-01 20:01:32

标签: c# asp.net .net-4.0 custom-controls

我想在我的网站上制作自定义控件(注意:不是网络应用程序)

以下是代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AnkitControls
{
    /// <summary>
    /// Summary description for CustomTreeView
    /// </summary>
    public class CustomTreeViewControl : WebControl
    {

    }
}

Default.aspx:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <%@ Register Assembly="AnkitControls" Namespace="AnkitControls" TagPrefix="CustomCtrl" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Welcome to ASP.NET!
    </h2>
    <p>
        To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.
    </p>
    <p>
        You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409"
            title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
    </p>
</asp:Content>

当我编译网站时,它会给我组装错误。

错误=“名称空间'AnkitControls'中不存在类型或命名空间名称'AnkitControls'(您是否缺少程序集引用?)”

3 个答案:

答案 0 :(得分:2)

正确使用Register标记:

<%@ Register TagPrefix="my" TagName="control" Src="~/Path/To/Your.ascx" %>

您指定的语法适用于控件在另一个程序集中的时间。

答案 1 :(得分:2)

您需要将DLL项目添加到您的解决方案并在您的Web项目中引用它,或者如果您在Web解决方案之外开发DLL,只需添加对已编译DLL的引用。接下来,您需要在web.config或页面级别注册该控件。我不建议在网站项目中开发自定义控件。

<%@ Register TagPrefix="ControlVendor" Assembly="ControlVendor" %>

查看此网站。 http://weblogs.asp.net/scottgu/archive/2006/11/26/tip-trick-how-to-register-user-controls-and-custom-controls-in-web-config.aspx

如果您打算在网站项目中创建自定义控件,则该类必须驻留在App_Code文件夹中,但注册不是直接的,因为Microsoft使用ASP预先设置了命名空间。我这样做非常困难所以我创建了一个DLL项目。

答案 2 :(得分:1)

您是否检查过自定义组件输出二进制文件是否为AnkitControls.dll? 您是否在网站属性中添加了它作为参考?