0

バックグラウンド:

その中に多数のユーザーコントロールがある ASP.NET ページがあります。興味深い 2 つのユーザー コントロールがあります。以前に選択したレコードに応じて、それらのいずれかを表示するか、どちらも表示しない必要があります。

ユーザー コントロールでは、FormView にあるいくつかのコントロールのプロパティを設定する必要があります。したがって、ユーザー コントロールのコード ビハインドには、次のような多くのプロパティがあります。

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

問題:

このプロパティに問題があります。Nothing/Null を返すこともあれば、「値を null にすることはできません。パラメータ名: コンテナ」というメッセージとともに NullArgumentException をスローすることもあります。例外は、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)
4

1 に答える 1

0

そして答えは...

問題はGridView私の内から来ていましたFormViewバインドされているアイテムの1つは、GridViewNothing / Null(BLLの変更、doh!)であり、悲しみを打ち砕きましたGridView

コードビハインドでのアクセスはFormView、例外の前のアンマネージコードの最後のビットであったため、これはVisualStudioが例外を表示していた場所です。そのため、スタックトレースを見るたびに、それがGridView上部の問題の原因であるとはクリックしていませんでした。私はFormView頭の中で立ち往生していて、それが私が読んでいたものです。

于 2011-01-06T03:13:39.990 に答える