2009-06-25 5 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をスローし、デバッガは言う:キーワード 'ベース' の

使用が有効ではありません、私はそのような何かを持っていますこの文脈では

ご協力いただきありがとうございます、ありがとうございます!

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

    // other stuff here ... 
} 

UserControl

が仮想 DataBindメソッドを持っていないが、それは仮想 OnDataBindingメソッドを持っている:

答えて

1

これを試してみてください。私はこれがあなたが上書きする方法だと信じています。

+0

10x Andrew、この方法ではbase.OnDataBinding();でクラッシュしません。しかし、私はこれがコードの意味を変えると思います。 MyCustomReportにはサブコントロールがあり、以前は同様のオーバーライドがあります。base.DataBind();彼らのデータバインドにつながったので、今度は彼らのOnDataBinding()は呼び出されません。 .aspxファイルに直接入れても同じコントロールが動作しますが、問題はWebサービスでロードする方法のようですが、何が間違っているのか正確に把握することはできません。 – user128873

関連する問題