2

これは、さまざまなコードです。コードビハインドでいくつかのビューステートが行われており、更新パネルがあります。これをマスター ページによって参照される子ページに追加すると、ユーザー コントロールから以前に機能していたすべての機能が壊れます。
子からマスター ページのコード ビハインド:

    protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    GetBrands();
                    GetStyles();
                    GetColors();
                    this.BindItemsList();
                }
            }
            catch (Exception)
            { }


        }
4

3 に答える 3

1

を削除してみてくださいUpdatePannel。これでコードが修正された場合は、問題を実装に切り分けたことになりますViewState。とに関する問題は珍しくありませんUpdatePannelsViewState

于 2012-10-21T15:39:16.330 に答える
0

PreRender は、コントロール イベントが処理された後に発生します。PreRender 中に追加されたコントロールは、すべてのコントロール関連イベントを無視します。

コードを提供していないため、これが問題の原因であるかどうかはわかりませんが、代わりに PageLoad でロジックを実行してみてください。

PreRender は、コントロールの外観を変更したり、イベントに関係のないマークアップを追加したりするのに適した場所です。

于 2012-10-21T04:00:19.013 に答える
-1

マスター ページの CreateChildControls メソッドをオーバーライドし、このメソッドにコントロールを設定する必要があります。このメソッドは、ページおよびサーバー コントロールのコード ビハインド クラスで子コントロールを作成するために使用する必要があります。これにより、入力されたコントロールの Viewstate が復元されないという問題が解決されます。また、Viewstate の復元に関する問題は、PopulateControls メソッドにコントロールを追加する方法にある場合があります。最初にコンテナー コントロール (パネルなど) がコントロール コレクションに追加されてから、コントロールがこのコンテナーに追加されるようにする必要があります。

いずれにせよ、次のようなことを試す必要があります。

/// <summary>
/// Called by the ASP.NET page framework to notify server controls that use composition-based 
/// implementation to create any child controls they contain in preparation for posting back or rendering.
/// </summary>
protected override void CreateChildControls()
{
    base.CreateChildControls();
    PopulateControls();
}
于 2012-10-21T10:59:42.607 に答える