1

2番目のタブが有効になっている2つのタブを持つAjaxtoolkit TabcontainerがFalseです。2 番目のタブに Combobox AjaxToolikit コントロールを配置しました。しかし、IEブラウザだけでサーバーにポストバックが発生すると、次のエラーが発生します。しかし、Firefox では問題なく、すべてが正常に動作します。どうしたの?

これは私のコードです:

     <ul>
          <li>
                        <asp:ImageButton ID="BtnNew" CausesValidation="false" runat="server" ImageUrl="~/CssImages/new_document.png"
                            ToolTip="New" Width="20px" OnClick="BtnNew_Click" /></li>
</ul>


 <cc1:TabContainer ID="TabContainer1" runat="server">
    <cc1:TabPanel runat="server" ID="Tab1" HeaderText="xx">
    <ContentTemplate>
    xx
    </ContentTemplate>
    </cc1:TabPanel>
    <cc1:TabPanel runat="server" ID="TabPanel1" HeaderText="yy"  Enabled="false">
    <ContentTemplate>
    dsds <cc1:ComboBox ID="ComboBox1" runat="server">
        <asp:ListItem>loblob</asp:ListItem>
        </cc1:ComboBox>
    </ContentTemplate>

    </cc1:TabPanel>
    </cc1:TabContainer>

エラー:

 Object reference not set to an instance of an object. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.



Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[NullReferenceException: Object reference not set to an instance of an object.]
   AjaxControlToolkit.ComboBox.LoadPostData(String postDataKey, NameValueCollection postCollection) +168
   AjaxControlToolkit.ComboBox.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +57
   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +690
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1743
4

2 に答える 2

1

IEは、サーバーの無効化されたフォーム要素と無効化されたコンテナ内の要素を送信しないと思います。これを修正する方法はたくさんあります。最も簡単なアプローチは、ComboBoxコントロールも無効にし、親タブコントロールで有効にすることです。より一般的な決定は、AjaxControlToolkitライブラリのComboBoxソースを修正することです。これを行うには、ライブラリソースをダウンロードし、ファイル内のLoadPostDataメソッドの最初の行を次のように変更する必要があります。Server/AjaxControlToolkit/ComboBox/ComboBox.cs

protected virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
    if (!Enabled || postCollection.GetValues(HiddenFieldControl.UniqueID) == null)
        return false;

    //...
}
于 2012-09-11T07:07:23.267 に答える
0

非表示のパネル/コントロールを使用していないにもかかわらず、この問題が発生しました。背後にある designer.cs が、 .aspx でコメントアウトされていても、私のために ComboBox コントロールを生成していたことが判明しました。

コメントアウトされた実験的/リマインダー コードを削除すると、すべて正常に機能しました。

生成されたコントロールは、非表示であるかのように動作しました。ポストバック時に同じ例外がポップアップしました。

于 2015-10-15T18:32:05.710 に答える