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";
}
尝试在更改标签文本的行后添加updRouteGroup.Update()
。需要此带有显式调用的行,因为标签位于带有 UpdateMode Conditional
的UpdatePanel
内。但是,单击按钮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_Load
中Some 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#";
}