2009-06-25 88 views
0

我想要一個Web服務來加載.ascx控件,加載一些值,然後返回此控件的HTML內容。我有類似的東西:ASP.NET LoadControl使用關鍵字'base'在此上下文中無效

[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覆蓋DataBind()

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

    // etc. 
} 

base.DataBind()拋出一個NullReferenceException和調試器說:

使用關鍵字 '基地' 的無效在這方面

任何幫助將不勝感激,謝謝!

回答

1

試試這個:

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

    // other stuff here ... 
} 

UserControl沒有一個虛擬DataBind方法,但它確實有一個虛擬OnDataBinding方法。我相信這是你要重寫的方法。

+0

10x Andrew,這樣它不會在base.OnDataBinding();上崩潰。不過我認爲這改變了代碼的含義。 MyCustomReport具有子控件,具有類似的重寫 - 之前,base.DataBind();導致他們的數據綁定,現在他們的OnDataBinding()不會被調用。 相同的控件在直接放入.aspx文件時起作用,問題似乎是我在Web服務中加載它的方式,但我無法確切地知道什麼是錯誤的。 – user128873 2009-06-25 15:46:53

相關問題