1

Ajax Control Toolkit ComboBox の使用に問題があります。これが私のテスト マークアップ ページです。

<%@ 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 が PostBack になった後、メソッド AjaxControlToolKit.ComboBox.System.Web.UI.IPostBackDataHandler.LoadPostData(stringpostDataKey, System.Collections.Specialized.Name.ValueCollection postCollection) で NullReferenceException を取得し、Visual Web Developer 2010 Express がパスを尋ねてきます。私が持っていないクラス ComboBox.cs 。

<% if { } %>ComboBoxがなくても問題なく動作します。

誰でも私を助けることができますか?

4

1 に答える 1

0

その理由は、チェックボックスがオンになり、ポストバックが発生した場合、コンボボックス コントロールは、クライアント データ コレクションからポストされた状態の非表示フィールド コントロールのデータが存在することを期待するためです。

この回答で提案されている最初の回避策: https://stackoverflow.com/a/12364475/360171<% ... %>そして、2 つ目 (実際にはより正しい) は、式を使用してサーバー コントロールを非表示に しないことです。ComboBox1.Visible = CheckBox1.Checked代わりに Page_Load メソッドで使用してください。

<% .. %>さらに、マークアップで式を使用してサーバー コントロールを操作することは避けてください。

于 2012-10-17T10:46:20.597 に答える