2011-01-05 24 views
0

背景:ArgumentNullException當訪問一個FormView實例

我有一個ASP.NET頁面,其中有用戶控件的數量。有2個感興趣的用戶控件。我需要顯示其中一個或者兩個都不顯示,具體取決於之前選擇的記錄。

在用戶控件中,我需要設置FormView中某些控件的屬性。所以在我的用戶控件的代碼隱藏我有一些看起來像這樣的屬性:

Private ReadOnly Property phSectionReports() As PlaceHolder 
    Get 
     Return fvConfirmationReport.FindControl("phSectionReports") 
    End Get 
End Property 

問題:本物業

我有問題。有時它返回Nothing/Null,有時它會拋出一個NullArgumentException異常,並顯示消息「Value can not be null。Parameter name:container」。該異常來自嘗試引用fvConfirmationReport變量。 fvConfirmationReport是我的FormView在頁面本身的ID。

所以我真的後的事情,尋找,如果任何想法什麼樣的條件(例如階段頁面週期等)可能會導致此?

示例堆棧跟蹤包含在下面。
ASP.NET 3.5 SP1,VB.NET

感謝,

堆棧跟蹤:

at System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) 
    at System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) 
    at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) 
    at System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable data) 
    at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) 
    at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) 
    at System.Web.UI.WebControls.DataBoundControl.PerformSelect() 
    at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() 
    at System.Web.UI.WebControls.GridView.DataBind() 
    at System.Web.UI.Control.DataBindChildren() 
    at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) 
    ...snip... 
    at System.Web.UI.Control.DataBind() 
    at System.Web.UI.Control.DataBindChildren() 
    at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) 
    at System.Web.UI.WebControls.FormView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) 
    at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) 
    at System.Web.UI.WebControls.FormView.PerformDataBinding(IEnumerable data) 
    at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) 
    at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) 
    at System.Web.UI.WebControls.DataBoundControl.PerformSelect() 
    at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() 
    at System.Web.UI.WebControls.FormView.DataBind() 
    at System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() 
    at System.Web.UI.WebControls.FormView.EnsureDataBound() 
    at System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() 
    at System.Web.UI.Control.EnsureChildControls() 
    at System.Web.UI.Control.FindControl(String id, Int32 pathOffset) 
    at System.Web.UI.Control.FindControl(String id) 
    at App_UserControls_xxx_ucConfirmationForm.get_phSectionReports() in ucConfirmationForm.ascx.vb:line 343 
    at App_UserControls_xxx_ucConfirmationForm.Page_Load(Object sender, EventArgs e) in ucConfirmationForm.ascx.vb:line 412 
    at System.Web.UI.Control.OnLoad(EventArgs e) 
    at System.Web.UI.Control.LoadRecursive() 
    ...snip... 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

回答

0

答案是...

的問題是從內GridView我來FormViewGridView中綁定的其中一項是Nothing/Null(BLL中的更改,doh!)導致GridView破解sads。

因爲在我的代碼隱藏中訪問FormView是異常之前非託管代碼的最後一位,所以這是Visual Studio顯示異常的地方。因此,每次我查看堆棧跟蹤時,我都沒有點擊過,它是一個GridView導致頂部出現問題。我的腦袋裏掛着FormView,這就是我正在讀的東西。

相關問題