访问FormView实例时的ArgumentNullException

时间:2011-01-05 02:48:02

标签: asp.net vb.net argumentnullexception

背景:

我有一个ASP.NET页面,其中包含大量用户控件。有两个用户控件是感兴趣的。我需要显示其中一个或两个都不显示,具体取决于之前选择的记录。

在用户控件中,我需要设置FormView中某些控件的属性。所以在我的用户控件代码隐藏中,我有许多看起来像这样的属性:

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

问题:

我遇到了这个属性的问题。有时它返回Nothing / Null,有时它抛出一个NullArgumentException,消息“Value not not null。参数名称:container”。异常来自于尝试引用fvConfirmationReport变量。 fvConfirmationReport是页面本身的FormView的ID。

所以我真的想要要寻找的东西,如果有任何想法什么样的条件(例如页面循环中的阶段等)可能会导致这种情况? < / p>

下面包含一个示例堆栈跟踪 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)

1 个答案:

答案 0 :(得分:0)

答案是......

问题来自我GridView内的FormView GridView中绑定的项目之一是Nothing / Null (BLL中的更改,哇!)导致GridView破解sads。

因为在我的代码隐藏中访问FormView是异常之前的最后一部分非托管代码,所以这是Visual Studio显示异常的地方。因此,每次我查看堆栈跟踪时,我都没有点击它是GridView导致顶部出现问题。我FormView陷入了脑海,这就是我在读的东西。