我想在我的网站上制作自定义控件(注意:不是网络应用程序)
以下是代码
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&clcid=0x409"
title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
</p>
</asp:Content>
当我编译网站时,它会给我组装错误。
错误=“名称空间'AnkitControls'中不存在类型或命名空间名称'AnkitControls'(您是否缺少程序集引用?)”
答案 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" %>
如果您打算在网站项目中创建自定义控件,则该类必须驻留在App_Code文件夹中,但注册不是直接的,因为Microsoft使用ASP预先设置了命名空间。我这样做非常困难所以我创建了一个DLL项目。
答案 2 :(得分:1)
您是否检查过自定义组件输出二进制文件是否为AnkitControls.dll? 您是否在网站属性中添加了它作为参考?