asp.net добавить пользовательский контроль на сайте - PullRequest
3 голосов
/ 02 августа 2011

Я хочу сделать пользовательский элемент управления на моем веб-сайте (примечание: не веб-приложение)

Следующий код

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 ]

2 голосов
/ 02 августа 2011

Используйте тег Register правильно:

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

Синтаксис, который вы задаете, предназначен для случаев, когда ваши элементы управления находятся в другой сборке.

2 голосов
/ 02 августа 2011

Вам необходимо добавить проект DLL в свое решение и ссылаться на него в своем веб-проекте, или, если вы разрабатываете 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.

1 голос
/ 02 августа 2011

Вы проверили, что ваш двоичный файл с пользовательским компонентом называется AnkitControls.dll? Вы добавили его в качестве ссылки в свойствах своего сайта?

...