Подтвердить что ты не робот

Как зарегистрировать настраиваемый серверный контроль на странице ASP.NET

У меня есть проект, и я пытаюсь зарегистрировать настраиваемый серверный элемент управления (на нем нет файла .ascx). В настоящее время я использую

Декларация класса

namespace MyApp.Controls{
    public class CustomControl: WebControl{
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }
            set
            {
                ViewState["Text"] = value;
            }
        }        
        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(Text);
        }
    }
}

На моей странице

<%@ Register TagPrefix="myControls" Namespace="MyApp.Controls" %>
<myControls:CustomControl runat="server" Text="What up!" />

Я получаю ошибку Parser с сообщением "Неизвестный тег сервера" myControls: CustomControl ".

Что я делаю неправильно?

4b9b3361

Ответ 1

Хорошо, если этот элемент управления находится в другой библиотеке классов или даже если он в одном и том же, было бы неплохо указать контрольную сборку в @Register:

<%@ Register TagPrefix="myControls" Namespace="MyApp.Controls" Assembly="MyApp" %>
   <myControls:CustomControl runat="server" Text="What up!" />

Очистите и перестройте свое решение, чтобы убедиться, что все правильно составлено!

Ответ 2

Вы должны поместить свое управление либо в папку App_Code (в случае, если элемент управления не находится в сборке), либо добавить ссылку на сборку, где находится этот элемент управления:

<%@ Register TagPrefix="myControls" Namespace="MyApp.Controls"
      Assembly="SomeAssembly" %>

Но угадывая, ваш контроль не под папкой App_Code.

Ответ 3

Если ваш элемент управления будет повторно использоваться на нескольких страницах, вы можете захотеть зарегистрировать его в web.config, как один из подэлементов system.web/pages/controls вместо копирования, вставляя тег < @Register во всех затронутых страницы.

web.config:

<system.web>
  <pages ...>
    <controls>
      ...
      <add tagPrefix="myCompany" namespace="MyCompany.Whatever.Controls" assembly="Whatever"/>
    </controls>

thepage.aspx:

<myCompany:ControlClassName ID="TheStuff" runat="server" ... />

Ответ 4

Добавьте атрибут сборки в свой тег register