2012-10-17 37 views
1

我有一個問題,使用Ajax控件工具包組合框。 這裏是我的測試標記頁面:System.Web.UI.IPostBackDataHandler.LoadPostData NullReferenceException在CheckBox PostBack與組合框內<% if { } %>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
</asp:ToolkitScriptManager> 
<div> 
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" /> 
<% if (CheckBox1.Checked) 
{ %><asp:ComboBox ID="ComboBox1" runat="server"> 
</asp:ComboBox> 

<% } %> 
</div> 
</form> 
</body> 
</html> 

CheckBox1上升回傳我得到的方法AjaxControlToolKit.ComboBox.System.Web.UI.IPostBackDataHandler.LoadPostData(stringpostDataKey,System.Collections.Specialized.Name一個NullReferenceException後。 ValueCollection postCollection)和Visual Web Developer 2010 Express向我詢問我沒有的ComboBox.cs類的路徑。

沒有<% if { } %> ComboBox工作正常。

任何人都可以幫助我嗎?

回答

0

原因是,當複選框變得檢查並回發時,組合框控件期望在從客戶端數據收集過帳中存在他的狀態隱藏字段控件的數據。

有兩種解決方法:第一個在這個答案建議:https://stackoverflow.com/a/12364475/360171 ,第二個(確實更正確的)是不使用<% ... %>表情隱藏服務器控件。改爲在Page_Load方法中使用ComboBox1.Visible = CheckBox1.Checked

此外,儘量避免標記中的<% .. %>表達式對服務器控件執行任何操作。

相關問題