ASP.NET не отображает элемент управления - PullRequest
1 голос
/ 12 марта 2009

У меня очень простой элемент управления, который я пытаюсь сделать, который выглядит следующим образом:

using System;
using System.Web;
using System.Web.UI;

namespace CORE.BusinessObjects.Web.Controls
{
    public class TestControl : Control
    {
        protected override void Render(HtmlTextWriter writer)
        {
            writer.Write("Hello from TestControl!");
        }
    }
}

Я вызываю элемент управления следующим образом:

<%@ Register TagPrefix="Custom" 
             Namespace="CORE.BusinessObjects.Web.Controls" %>    
<Custom:TestControl ID="testControl" runat="server" Visible="true">
</Custom:TestControl>

Я что-то не так делаю? Я также не смог запустить ЛЮБЫЕ контрольные образцы, которые я нашел онлайн. Ничто не выполняется. Я могу только выполнить конструктор элемента управления. Любой другой метод, который я пытался переопределить, например Render() или CreateChildControls(), не выполняется.

Спасибо.

РЕДАКТИРОВАТЬ: я забыл упомянуть, что элемент управления включен на страницу с главной страницей. Элемент управления действительно работает нормально на главной странице, но не за ее пределами.

Ответы [ 2 ]

3 голосов
/ 12 марта 2009

Вы должны попробовать следующее:

а. Наследовать от System.Web.UI.Control.WebControl класса.

б. Убедитесь, что вы создали библиотеку элементов управления, а ваша пользовательская библиотека элементов управления скомпилирована и указана в соответствующем веб-проекте. При желании добавьте его на панель инструментов и перетащите его на форму оттуда. Это также должно добавить ссылку в один шаг.

с. Убедитесь, что в вашем объявлении элемента управления есть атрибут Assembly, который указывает на имя сборки элемента управления, на которую делается ссылка:

<%@ Register TagPrefix="Custom" Assembly="CORE.BusinessObjects" Namespace="CORE.BusinessObjects.Web.Controls" %>
<Custom:TestControl ID="testControl" runat="server" Visible="true" />
1 голос
/ 12 марта 2009

Попытка наследования от CompositeControl или WebControl

...