asp:Literal-Steuerelement null in der Benutzer-Steuerelement
Ich habe ein user control enthält asp:Literal.
<div>
<asp:Literal id="MenuContainer" runat="server" />
</div>
Es ist eine Methode im code-behind-Seite, die initialisiert die Steuerung:
internal void Setup(MyBusinessObject obj)
{
MenuObject menu = MenuHelper.GetMenu(obj.State);
if(obj == null)
MenuContainer.Visible = false;
//other code
}
In der Seite, wo die Steuerung verwendet wird, nenne ich Setup Methode der Kontrolle in LoadComplete event-handler (ich war der erste Aufruf in Laden Ereignis). Unabhängig von MyBusinessObject null oder nicht null, wenn ich auf Wörtliche auf user-control bekomme ich Fehler:
Object reference not set to an instance of an object.
Was ist der Grund und was ist das Heilmittel für diese?
- Es IST in Ordnung für mich tho. Möglicherweise gibt es einige andere Probleme. Versuchen Sie, kompilieren Sie die gesamte website. Und by the way, sind Sie in der Lage, Zugriff auf andere Steuerelemente in das usercontrol-richtig?
- Tatsächlich ist dies die einzige Kontrolle, die in der Benutzer-contorl
Du musst angemeldet sein, um einen Kommentar abzugeben.
War es sehr einfach. Ich war das hinzufügen Dinge im web.config 's controls", wie vorgeschlagen wurde, durch Rick Sthral in einem seiner post ( 🙁 für etwa die post, die Sie suchen, auf seine Seite).
War es schön, die mir erlaubt, um Steuerelemente hinzuzufügen, ohne @ Register - tag, aber der Nachteil war, dass die untergeordneten Steuerelemente auf meine Kontrollen wurden als null angezeigt! also habe ich einfach gesagt @ Register Richtlinie in meine Seiten und es funktionierte.
Es hängt davon ab, genau wie Sie sind einschließlich der Steuerelemente in Ihrem web.config. Es wird nicht funktionieren, wenn Sie versuchen, um alle Steuerelemente, die in einem namespace (obwohl die designer richtig zeigen Sie die Liste Ihrer Kontrollen):
Aber wenn Sie fügen Sie Ihre Steuerung(en) einzeln ein und zeigen Sie Ihren physischen Standort(s), es wird so funktionieren, wie Sie erwarten, ohne zu müssen, enthalten endlos
@Register
Richtlinien.Dank, TheVillageIdiot, für das posten der Antwort zu deinem problem ich lief in genau die gleiche Missverständnis.
Hinzufügen von Steuerelementen über
im web.config war nicht genug, um es tatsächlich zu verwenden! Ich habe versucht, es so auf einer Seite:
... aber das führt zu dem Phänomen, dass keines der Steuerelemente im UserControl initialisiert wurden. Nur hinzufügen
oben auf der Seite das problem gelöst 🙂
Nochmals vielen Dank!
Sind Sie sicher, dass
MenuContainer
ist das problem? Sie verweisenobj.State
in der ersten Zeile derSetup
Funktion. Wenn dasobj
null ist, erhalten Sie diesen Fehler.Wie bereits in der Antwort von JerSchneid, wenn obj null ist, erhalten Sie diesen Fehler. Also, versuchen Sie, es zu tun wie dieser -
EDIT: ich weiß, Sie bekommen eine Fehlermeldung in dieser Zeile, sondern nur versuchen, es zu tun wie diese. Oder, sonst, entfernen Sie den gesamten code und halten Sie einfach die
MenuContainer.Visible = false;
Linie.Wenn
MenuContainer
ist null, es hat wahrscheinlich etwas zu tun mit der Zeit, die Linie der Lebenszyklus der Seite. Sie fordern, dass Funktion vorMenuContainer
miteinander verknüpft ist. Können Sie versuchen, den AufrufSetup
im Page_Load-Funktion?Den code, den Sie geschrieben ist folgende:
Wenn obj null ist, dann dereferenzieren obj.Stand in der ersten Zeile wird eine NullReferenceException ausgelöst
Wenn obj nicht null ist, wird die Zeile MenuContainer.Visible = false nicht ausgeführt werden.
Also ich glaube nicht, du bist die Verbuchung aller relevanten code.
Wenn Sie Schwierigkeiten haben, das Debuggen dieser Art von Sache, versuchen Sie es schrittweise durch den code mit dem debugger oder das hinzufügen von einigen behauptet, um Ihren code, die Ihnen helfen, um zu sehen, was genau geschieht: