2009-06-25 4 views
0

Ich möchte, dass ein Webdienst ein .ascx-Steuerelement lädt, einige Werte darin lädt und dann den HTML-Inhalt dieses Steuerelements zurückgibt. Ich habe so etwas wie das:ASP.NET LoadControl Die Verwendung des Schlüsselwortes 'base' ist in diesem Kontext nicht gültig.

[WebMethod(EnableSession = true)] 
public void GetHTML() 
{ 
    UserControl loader = new UserControl(); 
    MyCustomReport reportControl = 
     (MyCustomReport)loader.LoadControl("~/The/path/to/the/.ascx"); 
    reportControl.DataBind(); 

    return "TODO"; 
} 

MyCustomReport überschreibt DataBind():

public override void DataBind() 
{ 
    base.DataBind(); 

    // etc. 
} 

Die Reihe base.DataBind() wirft einen NullReferenceException und der Debugger sagt:

Verwendung von Keyword 'Basis' nicht gültig in diesem Zusammenhang

Jede Hilfe wird geschätzt, danke!

Antwort

1

Try this:

public override void OnDataBinding() 
{ 
    base.OnDataBinding(); 

    // other stuff here ... 
} 

UserControl keine virtuelle DataBind Methode hat aber es hat eine virtuelle OnDataBinding Methode hat. Ich glaube, das ist die Methode, die Sie übersteuern wollen.

+0

10x Andrew, so stürzt es nicht bei base ab.OnDataBinding(); Aber ich denke, das ändert die Bedeutung des Codes. MyCustomReport hat Untersteuerungen, mit einer ähnlichen Überschreibung - zuvor, der Base.DataBind(); führte zu ihrer Datenbindung, jetzt werden ihre OnDataBinding() s nicht aufgerufen. Das selbe Steuerelement funktioniert, wenn es direkt in eine ASPX-Datei eingefügt wird, scheint das Problem die Art zu sein, wie ich es im Webdienst lade, aber ich kann nicht herausfinden, was genau falsch ist. – user128873

Verwandte Themen