如何在WebForms的运行时更改UserControl中控件的属性



我有一个简单的UserControl定义为:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AdminBanner.ascx.cs" Inherits="OrderManager.Controls.AdminBanner" %>
<asp:Panel runat="server" ID="AlertPanel" BorderWidth="1px">
<asp:Label runat="server" ID="LabelTitle" Text="Test!!!!!!!" ></asp:Label>
</asp:Panel>

我在aspx页面上包含UserControl,如下所示:

<table style="width: 100%;">
<tr>
<td>
<asp:Panel ID="PanelPreviewBanner" Visible="False" runat="server">
<OrderManager:AdminBanner  Id="AdminBanner" Visible="True" runat="server" />
</asp:Panel>
</td>
</tr>
</table>

单击web窗体上的按钮时,我不仅要显示面板,还要更改UserControl中LabelTitle的默认值。我可以这样显示面板:

// Display the Preview Panel.
this.PanelPreviewBanner.Visible = true;

如果我试图更改USerControl的LabelTitle,使用UC的ID或通过USerControl中的属性进行枯萎,我总是会收到一个错误,说明该控件为null。

我的最终目标是能够在UserControl中定义的对象上设置css类和样式。

我尝试了很多我在这里和谷歌上找到的例子,但都不起作用。

我假设你已经完成了这项工作-

  1. AdminBanner.ascx.cs中的一个公共属性,用于公开要由父页设置的标签的文本属性
public string LabelTitleValue
{
get { return LabelTitle.Text; }
set { LabelTitle.Text = value; }
}
  1. 以下是如何获取/设置用户控件的标签文本
AdminBanner.LabelTitleValue = "Test changed";
var text = AdminBanner.LabelTitleValue;

如果您已经这样做了,您可以首先尝试在面板外删除您的用户控件(如下所示(,并至少确认正在显示用户控件。

<td>
<asp:Panel ID="PanelPreviewBanner" Visible="False" runat="server"></asp:Panel>
<OrderManager:AdminBanner  Id="AdminBanner" Visible="True" runat="server" />
</td>

如果它显示正确,除了设置面板的可见性外,您还可以执行以下操作

// Display the Preview Panel.
this.PanelPreviewBanner.Visible = true;
this.AdminBanner.Visible = true;

最新更新