asp.net Label永远不能从代码隐藏中修改

时间:2013-08-07 18:36:39

标签: c# asp.net .net updatepanel

我有一个包含asp.net标签的面板/ updatepanel。似乎在任何情况下都不能改变该控件的Text字段。代码:

    <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的.Text字段?感谢。

以下是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";
  }

3 个答案:

答案 0 :(得分:3)

尝试在更改标签文字的行之后添加updRouteGroup.Update()。 由于标签位于UpdatePanel UpdateMode Conditional内,因此需要显式调用此行。单击按钮btnDisableOnHold时不应该这样做。

或者只需将UpdateMode更改为Always即可。

要详细了解Update Panels及其UpdateMode媒体资源,请点击以下链接:

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

答案 1 :(得分:2)

这是你的问题,这一行:

lblOnHoldFile.Text = "Current file: none";

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

标签的Text属性改变了两次;一次到Some text中的Page_Load,然后回到btnDisableOnHold_OnClick方法中的原始值。这使得设置Text值似乎什么都不做,而实际上它已经改变了。

更新:

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

阅读Understanding the JavaScript __doPostBack Function

答案 2 :(得分:1)

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#";
    }