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