2008-10-09 14 views
5

Ich versuche, ein benutzerdefiniertes Kalendersteuerelement zu erstellen, das von dem integrierten Kalenderbenutzersteuerelement von ASP.Net erbt.Vererbung von einem ASP.NET-Websteuerelement: "Element <name> ist kein bekanntes Element"

der Code-Behind-Datei für meine Kontrolle sieht wie folgt aus:

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

    } 
} 

und kompiliert in Ordnung.

Allerdings, wenn ich versuche, meine benutzerdefinierte Steuerelement auf einer aspx Seite zu platzieren:

<%@ 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> 

Ich erhalte eine Warnung ‚Element WeeklyEventsCalendar kein bekanntes Element ist. Dies kann auftreten, wenn auf der Website ein Kompilierungsfehler auftritt oder die Datei web.config fehlt. ' Versuch

Ich bekomme keine Art von "Datei nicht gefunden" -Fehler wie ich in der Vergangenheit, wenn ich den Speicherort der Datei falsch eingegeben habe.

Wenn ich versuche, aspx Seite in einem Browser zu laden, erhalte ich Fehler CS0115: ‚ASP.usercontrols_weeklyeventscalendar_ascx.FrameworkInitialize()‘: keine geeignete Methode

außer Kraft zu setzen gefunden, die noch verwirrender ist, denn nirgendwo In meinem Code versuche ich eine solche Funktion zu definieren.

Dies sollte wirklich einfach sein. Wo gehe ich falsch?

+0

Was passiert, wenn Sie die Page_Load-Methode deaktivieren? ? –

+0

Genau das gleiche. Guter Vorschlag obwohl! – Ryan

Antwort

4

Bryant traf es. Eine Sache, die Sie in Betracht ziehen könnten, wenn Sie lediglich das vorhandene Steuerelement anpassen, ist das Einbetten einer Instanz des Kalenders in Ihr Benutzersteuerelement und die Offenlegung der Eigenschaften, die Sie benötigen. Auf diese Weise kann Ihre Benutzersteuerung alle erforderlichen Anpassungen durchführen und auch nur eine begrenzte Schnittstelle für die verbrauchende Anwendung bereitstellen. (Dies ist Komposition statt Vererbung.)

Wenn Sie wirklich vollständig aus asp: Kalender ableiten müssen, dann müssen Sie eine Standardklasse erstellen, die vom Calendar-Steuerelement abgeleitet ist, und dann Ihre Anpassungen vornehmen. Sie werden jedoch kein UI-Design dafür haben - alles, was Sie tun, muss ein benutzerdefinierter Code sein. (Und wenn Sie den ausgegebenen HTML-Code ändern müssen, müssen Sie auch diese benutzerdefinierten Datenströme schreiben - was mit einem Kalender-Steuerelement sehr schmerzhaft sein könnte.)

+0

danke für die gründliche Beschreibung der Vor- und Nachteile. Ich werde weiter darauf eingehen und sehen, was meinen Bedürfnissen am besten entspricht. – Ryan

5

Ich denke, das Problem ist, dass Sie versuchen, das Calendar-Steuerelement (das ein Serversteuerelement ist) von einem Benutzersteuerelement (basierend auf Ihrer ASCX-Erweiterung) zu erben. Du kannst das nicht tun. Wenn Sie vom Calendar-Steuerelement erben möchten, müssen Sie ein Serversteuerelement erstellen.

Lassen Sie mich wissen, wenn Sie einen Beispielcode benötigen.

+0

Beispielcode wäre nett. –

Verwandte Themen