Hintergrund:ArgumentNullException beim Zugriff auf eine FormView-Instanz
Ich habe eine ASP.NET-Seite, die eine Anzahl von Benutzersteuerelementen enthält. Es gibt 2 Benutzersteuerelemente, die von Interesse sind. Ich muss entweder einen oder keinen von beiden anzeigen, abhängig von dem zuvor ausgewählten Datensatz.
In den Benutzersteuerelementen muss ich Eigenschaften einiger Steuerelemente, die sich in einem FormView befinden, festlegen. Also in meiner Benutzersteuer Code-behind habe ich eine Reihe von Eigenschaften, die in etwa so aussehen:
Private ReadOnly Property phSectionReports() As PlaceHolder
Get
Return fvConfirmationReport.FindControl("phSectionReports")
End Get
End Property
Das Problem:
Ich habe Probleme mit dieser Eigenschaft. Manchmal gibt es Nothing/Null zurück und manchmal wirft es eine NullArgumentException mit der Nachricht "Wert kann nicht null sein. Parameter name: container". Die Ausnahme kommt von dem Versuch, auf die Variable fvConfirmationReport zu verweisen. fvConfirmationReport ist die ID meines FormView auf der Seite selbst.
So bin ich wirklich nach Dinge für und wenn irgendwelche Ideen welche Art von Bedingungen (z Stufe in Seite Zyklus usw.) aussehen könnte dazu führen?
Ein Beispiel für einen Stack-Trace ist unten enthalten.
ASP.NET 3.5 SP1, VB.NET
Danke,
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)