CSharp - 无法访问 ASP.NET updatepanel内的控件

  显示原文与译文双语对照的内容
0 0

我使用来自微软的官方示例:

当我试图从单击事件中的代码访问MyLabel时,MyLabel为空。

为什么?

<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始终为空?

<%@ 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!";
 }
时间:原作者:7个回答

0 0

尝试将函数改为 protected 而不是 private,它为我工作。 希望能解决你的问题

原作者:
0 0

你可以将 UpdateMode="Conditional" 调整为 Updatepanel

链接:http://msdn.microsoft.com/fr-fr/library/system.web.ui.updatepanel.updatemode.aspx

原作者:
...