Получить пользовательский контроль HTML в asp.net - PullRequest
0 голосов
/ 30 декабря 2011

Я пытаюсь загрузить пользовательский элемент управления из службы codebehind и получить его значение html. Однако в этом элементе управления есть повторитель, который не загружается / не инициализируется, поэтому он всегда равен нулю

я получаю

Object reference not set to an instance of an object.

в функции loadOrderInvoiceView при попытке

// fill repeater
this.rptView.DataSource = result;
this.rptView.DataBind();

в строке, где написано this.rptView.DataSource = result; ... я пытался отладить, и по какой-то причине this.rptView равно нулю

А вот и сервисный звонок

    StringBuilder sb = new StringBuilder();
    StringWriter tw = new StringWriter(sb);
    HtmlTextWriter hw = new HtmlTextWriter(tw);

    //ctrl.RenderControl(hw);

    myControls.OrderInvoiceView oiv = new myControls.OrderInvoiceView();
    oiv.loadOrderInvoiceView(OID);// load the control with order id
    oiv.RenderControl(hw);

    return sb.ToString();

Заранее спасибо за любые идеи. Я использую .net 4

1 Ответ

3 голосов
/ 30 декабря 2011

я узнал, как обойти это

    Page p = new Page();
    myControls.OrderInvoiceView oiv = (myControls.OrderInvoiceView)p.LoadControl("~/myControls/OrderInvoiceView.ascx");

вместо

myControls.OrderInvoiceView oiv = new myControls.OrderInvoiceView();

окончательный результат

        StringBuilder sb = new StringBuilder();
        StringWriter tw = new StringWriter(sb);
        HtmlTextWriter hw = new HtmlTextWriter(tw);

        Page p = new Page();
        myControls.OrderInvoiceView oiv = (myControls.OrderInvoiceView)p.LoadControl("~/myControls/OrderInvoiceView.ascx");

        //myControls.OrderInvoiceView oiv = new myControls.OrderInvoiceView();
        oiv.loadOrderInvoiceView(OID);
        oiv.RenderControl(hw);

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