@Adrian, Hier ist meine Antwort auf Ihre Frage. Ich muss es hier sagen, denn ich werde weit über mein Char-Limit laufen.
Ok, das erste Problem, das ich hatte, war, dass ich eine ASP.NET Webseite wurde mit, keine ASP.NET Anwendung. Ich habe das geändert, also benutzte ich das letztere. Dies machte es so, dass alle Seiten, die von da an erstellt wurden, standardmäßig einen Namespace hatten (der Name des Ordners, in dem sie sich befanden). Ich weiß nicht, ob Sie Steuerelemente mit einem Namespace auf einer Website registrieren können, vielleicht weil Websites standardmäßig keine Namespaces haben.
Nehmen wir an, ich habe ein Web User Control namens myControl.ascx
erstellt und als ~/controls/myControl.ascx
gespeichert. Mit Blick auf die Ascx-Datei sollte die oberste Zeile lauten: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="myControl.ascx.cs" Inherits="myApplication.controls.myControl" %>
. myApplication
ist der Name Ihrer Website, und Sie können ihn in den Namespace controls
einfügen, da dies der Ordner ist, in dem er sich befindet. Wenn Sie sich den Code dahinter ansehen, stimmt der Namespace überein.
Jetzt haben Sie zwei Möglichkeiten, wie Sie das Steuerelement registrieren und verwenden können. Der langsame Weg besteht darin, jedes Steuerelement, das Sie verwenden möchten, auf jeder Seite, die Sie haben, zu registrieren, was gut ist, wenn Sie nur ein paar davon haben.Dazu schreiben Sie die folgende Zeile in der Seite, die Sie von der Steuerung aufgerufen werden sollen (wie die Indexseite, zum Beispiel):
<%@ Register TagPrefix="myC" TagName="myCoolControl" Src="~/control/myControl.ascx" %>
, dass die langsame Art und Weise ist, aber es funktioniert (es sei denn, ich etwas getippt falsch).
Hier ist, was ich versucht habe: machen Sie es so, dass ich nicht tausendmal tippen muss, und tun Sie es nur einmal in der Datei web.config
.
Konfigurieren Sie Ihre web.config
Datei wie folgt aussehen:
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="myCont" namespace="myApplication.controls" assembly="myApplication" />
</controls>
</pages>
</system.web>
</configuration>
Dies wird automatisch jede Steuerregister in den „myApplication.controls“ Namespace gemacht, die, wenn Sie die Dinge richtig eingestellt ist, jede Kontrolle ist gemacht in der Ordner "Kontrollen". Denken Sie daran, dass Sie den Ordner "controls" nicht aufrufen müssen, damit dies funktioniert. Sie können einen beliebigen Namespace hier aufgelistet haben, und es sollte gut funktionieren.
Jetzt öffnen Sie eine Seite, die Sie ein Steuerelement von Programmatic (wie Index) laden möchten. Sie sind NICHT gehen Sie etwas in der aspx-Datei schreiben, einschließlich alles über die Registrierung der Seite. Die Steuerung ist bereits registriert, so alles, was wir tun müssen, ist es laden in dem Code-Behind:
myControl myCont = LoadControl("~/controls/myControl.ascx") as myControl;
//feel free to use the variable, or add it to the page with a panel or something
Ich hoffe wirklich, dass dies Ihre Frage beantwortet. Es hat etwas an meinem Ende gegraben, um es zum Laufen zu bringen, also bin ich froh, anderen mit diesem Problem zu helfen. Danke nochmal an CyberDude, der mich in die richtige Richtung gebracht hat.
[hier] (http://stackoverflow.com/questions/8953690/programmatically-load-usercontrol-with-reference-in-web-config) ist ein Link zu was ich tun möchte, aber es war ungelöst . – gunr2171