ArgumentNullException при доступе к экземпляру FormView - PullRequest
0 голосов
/ 05 января 2011

Фон:

У меня есть страница ASP.NET, в которой есть множество пользовательских элементов управления.Есть 2 пользовательских элемента управления, которые представляют интерес.Мне нужно отобразить один из них или ни один из них, в зависимости от ранее выбранной записи.

В пользовательских элементах управления мне нужно установить свойства некоторых элементов управления, которые находятся в FormView.Таким образом, в моем коде контроля пользовательского управления у меня есть несколько свойств, которые выглядят примерно так:

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

Проблема:

У меня проблемы с этим свойством.Иногда он возвращает Nothing / Null, а иногда выдает исключение NullArgumentException с сообщением «Значение не может быть нулевым. Имя параметра: контейнер».Исключение происходит при попытке обратиться к переменной fvConfirmationReport.fvConfirmationReport - это идентификатор моего FormView на самой странице.

Так что я действительно после вещей, которые нужно искать и если есть идеи , какие условия (например, этап в цикле страницыи т. д.) может привести к этому?

Ниже приведен пример трассировки стека.
ASP.NET 3.5 SP1, VB.NET

Спасибо,

StackTrace:

   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 голосов
/ 06 января 2011

И ответ ...

Проблема исходила из GridView в моем FormView. Одним из элементов, которые были связаны в GridView, было Nothing / Null (изменение в BLL, дох!), В результате чего GridView взломал пени.FormView в моем коде был последний бит неуправляемого кода перед исключением, именно здесь Visual Studio отображала исключение.Из-за этого каждый раз, когда я смотрел на трассировку стека, я не нажимал, что это GridView, вызывающее проблемы наверху.В моей голове застряло FormView, и это то, что я читал.

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