ASP.NET LoadControl Использование ключевого слова 'base' недопустимо в этом контексте.

Я хочу, чтобы веб-служба загружала элемент управления.ascx, загружала в него некоторые значения и затем возвращала содержимое HTML этого элемента управления. У меня есть что-то подобное:

[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 и отладчик говорит:

Использование ключевого слова 'base' недопустимо в этом контексте.

Любая помощь будет оценена, спасибо!

1 ответ

Попробуй это:

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

    // other stuff here ...
}

UserControl не имеет виртуального DataBind метод, но у него есть виртуальный OnDataBinding метод. Я считаю, что это метод, который вы хотите переопределить.

Другие вопросы по тегам