Наследование от веб-элемента управления ASP.NET: «Элемент <name>не является известным элементом» - PullRequest
5 голосов
/ 09 октября 2008

Я пытаюсь создать пользовательский элемент управления календаря, который наследуется от встроенного в ASP.Net пользовательского элемента управления календаря.

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

public partial class WeeklyEventsCalendar : Calendar
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

и компилируется нормально.

Однако, когда я пытаюсь разместить свой пользовательский элемент управления на странице aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testbed.aspx.cs" Inherits="testbed" %>
<%@ Register Src="UserControls/WeeklyEventsCalendar.ascx" TagName="WeeklyEventsCalendar"
    TagPrefix="mvs" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Untitled Page</title>
    <link href="~/css/VitalSignsStyleSheet.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <div>
        <mvs:WeeklyEventsCalendar runat="server" />
    </div>
</body>
</html>

Я получаю предупреждение 'Элемент WeeklyEventsCalendar не является известным элементом. Это может произойти, если на веб-сайте произошла ошибка компиляции или отсутствует файл web.config. ' Попытка

Я не получаю никакой ошибки «файл не найден», как это было в прошлом, когда я неправильно набрал местоположение файла.

Когда я пытаюсь загрузить страницу aspx в браузере, я получаю ошибку CS0115: 'ASP.usercontrols_weeklyeventscalendar_ascx.FrameworkInitialize ()': не найден подходящий метод для переопределения

Что еще более запутанно, потому что нигде в моем коде я не пытаюсь определить такую ​​функцию.

Это должно быть действительно просто. Куда я иду не так?

Ответы [ 2 ]

5 голосов
/ 09 октября 2008

Мне кажется, проблема в том, что вы пытаетесь унаследовать элемент управления Calendar (который является серверным) от пользовательского элемента управления (на основе вашего расширения ASCX). Вы не можете сделать это. Если вы хотите наследовать от элемента управления Calendar, вам нужно создать серверный элемент управления.

Дайте мне знать, если вам нужен пример кода.

4 голосов
/ 09 октября 2008

Брайант ударил по нему. Одна вещь, которую вы могли бы рассмотреть, если все, что вы делаете, это настраивает существующий элемент управления, это встраивает экземпляр календаря в свой пользовательский элемент управления и предоставляет нужные вам свойства. Таким образом, ваш пользовательский элемент управления может обрабатывать все необходимые настройки, а также предоставлять только ограниченный интерфейс для приложения-потребителя. (Это композиция вместо наследования.)

Если вам действительно нужно полностью наследовать от asp: Calendar, то вам нужно создать стандартный класс, производный от элемента управления Calendar, а затем выполнить ваши настройки. Однако для этого у вас не будет пользовательского интерфейса - все, что вы будете делать, должно быть пользовательским кодом. (И если вам нужно изменить исходящий HTML-код, вам нужно будет также записать эти пользовательские потоки, что с помощью календаря может быть болезненным.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...