2011-12-29 80 views
0

我試圖從代碼隱藏服務加載用戶控件並獲取它的html值。但是有一個在未得到加載/初始化時控制一箇中繼器,使得它一直空在asp.net中獲取用戶控件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

+0

你是如何初始化'這一點。 rptView'? – lsuarez 2011-12-29 22:56:38

+0

我努力使控制將自動初始化它..無論如何,我會回答我自己的問題。我剛剛發現如何解決它 – robert 2011-12-29 23:03:23

+0

可能的重複[如何獲得.NET(C#)中的用戶控件的HTML輸出?](http://stackoverflow.com/questions/288409/how-do-i -get-的-HTML的輸出對的一用戶控件功能於淨-c)的 – 2011-12-29 23:16:15

回答

3

我發現瞭如何繞過它

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();