2009-06-25 45 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

相关问题