ajax tabPanel の ActiveTabChanged のイベント ハンドラーが 2 回起動する理由がわかりません。
誰でも次のコードを新しいプロジェクトに貼り付けて (AjaxControlToolkit を参照して)、問題を再現できるはずです。
ユーザーがタブをクリックすると、テキスト ボックスの内容からわかるように、tabchanged が 2 回発生します。また、2 回ヒットするブレークポイントをデバッグして設定することでも確認できます。
マークアップ
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="Project1.WebForm1" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="ajax" %>
<!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">
<div>
<asp:ScriptManager runat="server" ID="ScriptManager1"
EnablePartialRendering="true"
SupportsPartialRendering="true"
ScriptMode="Release"
LoadScriptsBeforeUI ="true">
</asp:ScriptManager>
<asp:UpdatePanel ID="up" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<ajax:TabContainer id="TabContainer" runat="server" EnableViewState="true" AutoPostBack="true">
<ajax:TabPanel id="tab1" runat="server" HeaderText="Tab1">
<ContentTemplate>
<asp:TextBox runat='server' ID="txtTab1" Text="" Width="600px"></asp:TextBox>
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel id="tab2" runat="server" HeaderText="Tab2">
<ContentTemplate>
<asp:TextBox runat='server' ID="txtTab2" Text="" Width="600px"></asp:TextBox>
</ContentTemplate>
</ajax:TabPanel>
</ajax:TabContainer>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
コードビハインド
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Private Sub TabContainer_ActiveTabChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabContainer.ActiveTabChanged
Me.txtTab1.Text = Me.txtTab1.Text & "_changed"
Me.txtTab2.Text = Me.txtTab2.Text & "_changed"
End Sub
End Class