asp.net 永远不能从代码隐藏修改标签

本文关键字:隐藏 修改 标签 代码 net 永远 不能 asp | 更新日期: 2023-09-27 18:26:43

我有一个包含 asp.net 标签的面板/更新面板。 似乎在任何情况下都不能更改此控件的文本字段。 法典:

    <asp:Panel runat="server" ID="Panel1" Width="100%">
    <asp:UpdatePanel runat="server" ID="updRouteGroup" UpdateMode="Conditional">
      <Triggers>
        <asp:PostBackTrigger ControlID="btnDisableOnHold" />
      </Triggers>
      <ContentTemplate>        
       <asp:Panel ID="pnlImpExcel" runat="Server" >
      <div style="width:100%">
       <table colspan="0" width="100%" cellpadding="0" cellspacing="0">
          <tr>
             <th colspan="3">
                On Hold Music
             </th>
          </tr>
          <tr style="height:10px"></tr>
          <tr>
             <td align="left" valign="middle" style="width:33%"><div id="fine-uploader"></div></td>
             <td align="center" valign="middle"><asp:Label ID="lblOnHoldFile" runat="server" Text="Current file: none" /></td>
             <td align="right" valign="middle"><asp:Button ID="btnDisableOnHold" runat="server" style="margin-right:7px;width:87px;" Text="Disable Hold Music" CssClass="button" OnClick="btnDisableOnHold_OnClick" /></td>
          </tr>
          <tr><td colspan ="2" align="center"><asp:Label runat="server" ID="lblUploadError" style="color: Red;" Visible="false" /></td></tr>
       </table>              
       </div>
       </asp:Panel> 
       </ContentTemplate> 
    </asp:UpdatePanel> 
    </asp:Panel>

当发生回发时,我可能需要更新它,所以我检查了一些条件,然后尝试通过执行以下操作来修改文本:

protected void Page_Load(object sender, EventArgs e)
{
    if (this.Page.IsPostBack)
       lblOnHoldFile.Text = "Some text.";
}

这段代码可能很糟糕,我对 ASP.NET 几乎没有经验,并且继承了这个项目。 但是我仍然无法理解如果您根本无法修改它们,那么在代码隐藏中公开这些标签的意义是什么。 如何设置 .控件的文本字段 lblOnHoldFile? 谢谢。

以下是btnDisableHold_OnClick的内容:

  protected void btnDisableOnHold_OnClick(object sender, EventArgs e)
  {
     //Update some records
     // Clear out any existing file from the label:
     lblOnHoldFile.Text = "Current file: none";
  }

asp.net 永远不能从代码隐藏修改标签

尝试在更改标签文本的行后添加updRouteGroup.Update()。需要此带有显式调用的行,因为标签位于带有 UpdateMode ConditionalUpdatePanel内。但是,单击按钮btnDisableOnHold时不需要它。

或者只需将UpdateMode更改为Always,这应该可以工作。

要了解有关Update Panels及其UpdateMode财产的更多信息,请查看此链接:

http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.updatemode.aspx

那是你的问题,这一行:

lblOnHoldFile.Text = "Current file: none";

您已撤消在 click 事件处理程序中使用上述行在Page_Load所做的文本更改。

标签的Text属性更改了两次;一次是在Page_LoadSome text,然后在btnDisableOnHold_OnClick方法中恢复到其原始值。这使得设置Text值似乎没有任何作用,而实际上它已被更改。

更新:

要让 JavaScript 为您的代码创建回发,您需要调用 __doPostBack 函数。

阅读了解 JavaScript __doPostBack函数

kmarks2,

您的标记:

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server"> <asp:Label ID="someLabel" runat="server"></asp:Label>
</asp:Content>

C# 代码隐藏:

protected void Page_Load(object sender, EventArgs e)
    {
        someLabel.Text = "This is text generated from code-behind, in c#";
    }