2010-03-12 10 views
8

Ich habe DropDownList subclassed Funktionalität meine Anwendung spezifisch hinzuzufügen:Wie Verwenden eines Subclassed Control auf einer ASP.NET-Seite?

public class MyDropDownList : DropDownList 
{ 
    ... 
} 

... dann verwiesen sie in Web.Config, das ist, wo ich die Dinge schief gehen starten Figur:

<pages theme="Main"> 
    <controls> 
     <add tagPrefix="bob" tagName="MyDropDownList" src="~/Components/MyDropDownList.cs" /> 
    </controls> 
</pages> 

mein Referenz darauf funktioniert nicht:

<tr><td>Category</td> 
    <td><bob:MyDropDownList runat="server" ID="Category"... /> 

und meine beste Ahnung ist die Compiler Fehlermeldung:

"The file 'src' is not a valid [sic] here because it doesn't expose a type." 

Ich stelle fest, dass ich das Wissen, wie man hier ein Web User Control erstellt, falsch verwende. Was ich tun möchte, bezieht sich auf dieses Steuerelement auf einer ASP.NET-Seite genau wie ich die Eltern DropDownList wäre. Refactoring zurück in ein Web-Benutzer-Steuerelement, das eine DropDownList enthält, ist nicht wünschenswert, weil ich eine RequiredFieldValidator darauf anwenden möchte.

+0

Sie haben nur die CS-Datei mit Ihrem MyDropDownList-Steuerelement hinzugefügt? Ich dachte, wenn Sie ein neues Steuerelement erstellen, fügen Sie immer sowohl ASCX- als auch CS-Dateien hinzu. –

Antwort

7
<pages theme="Main"> 
    <controls> 
     <add tagPrefix="bob" namespace="MyProject" assembly="MyProject" /> 
    </controls> 
</pages> 

Das sollte den Trick tun.

+0

Basierend auf dem, was ich bisher gelesen habe, klingt das besser als das, was ich mache. Es funktioniert nicht, tho ', und ich denke, es liegt daran, dass das enthaltene Projekt eine "Web Site" und keine "Web Application" ist. Ich werde ein Unterprojekt erstellen, es dort einfügen, den entsprechenden Verweis in Web.Config erstellen und dann zurückmelden. –

+0

Funktioniert! Vielen Dank! –

4

@Joops Antwort hat mich gerettet.

Was ich anders gemacht habe, war, den Namensraum oben auf meiner Seite zu registrieren, weil ich ihn nicht überall brauchte.

dh.

<%@ Register TagPrefix="myTagPrefix" Namespace="MySolution.MyProject.Foo.Bar" 
     Assembly="MySolution.MyProject" %> 

Prost Joop!

Verwandte Themen