Microsoft のこの公式サンプルを使用します。
クリック イベントで分離コードから MyLabel にアクセスしようとすると、MyLabel は NULL です。
なぜこれ?
<asp:ScriptManager ID="PageScriptManager" runat="server" />
<asp:Button ID="MyButton" Text="Click Me" runat="server" onClick="MyButton_Clicked" />
<asp:UpdatePanel ID="MyUpdatePanel" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="MyButton" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Label ID="MyLabel" Text="OldText" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
private void MyButton_Clicked(object sender, EventArgs e)
{
MyLabel.Text = "NewText!";
}
更新このコードは機能しません なぜですか? MyLabel はサーバー側で常に NULL です ??
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:ScriptManager runat="server" ID="xx">
</asp:ScriptManager>
<asp:ImageButton OnClick="OnClickRefreshButton" ID="RefreshImageButton" runat="server" Width="100px" />
<asp:UpdatePanel ID="MyUpdatePanel" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="RefreshImageButton" EventName="Click" />
</Triggers>
<asp:ContentTemplate>
<asp:Label ID="MyLabel" Text="OldText" runat="server" />
</asp:ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
protected void OnClickRefreshButton(Object sender, ImageClickEventArgs e)
{
MyLabel.Text = "NewText!";
}