ASP.NET LoadControl Использование ключевого слова 'base' недопустимо в этом контексте. - PullRequest
0 голосов
/ 25 июня 2009

Я хочу, чтобы веб-служба загружала элемент управления .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 Ответ

1 голос
/ 25 июня 2009

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

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

    // other stuff here ...
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...