如何在运行时在 WebForms 中更改 UserControl 中控件的属性
How to change the properties of controls in a UserControl at runtime in WebForms
我有一个简单的 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 窗体上单击一个按钮时,我不仅要显示Panel,还要更改UserControl 中LabelTitle 的默认值。我可以这样显示面板:
// Display the Preview Panel.
this.PanelPreviewBanner.Visible = true;
如果我尝试更改 USerControl 的 LabelTitle,使用 UC 的 ID 或通过 UserControl 中的 属性,我总是会收到一条错误消息,指出该控件为空。
我的最终目标是能够在我的 UserControl 中定义的对象上设置 css class 和样式。
我已经尝试了很多我在这里和通过 Google 找到的例子,但没有任何效果。
我假设你已经这样做了 -
- 您 AdminBanner.ascx.cs 中的 public 属性 公开标签文本 属性 由父页面设置
public string LabelTitleValue
{
get { return LabelTitle.Text; }
set { LabelTitle.Text = value; }
}
- 下面是您应该如何 get/set 用户控件的标签文本。
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;
我有一个简单的 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 窗体上单击一个按钮时,我不仅要显示Panel,还要更改UserControl 中LabelTitle 的默认值。我可以这样显示面板:
// Display the Preview Panel.
this.PanelPreviewBanner.Visible = true;
如果我尝试更改 USerControl 的 LabelTitle,使用 UC 的 ID 或通过 UserControl 中的 属性,我总是会收到一条错误消息,指出该控件为空。
我的最终目标是能够在我的 UserControl 中定义的对象上设置 css class 和样式。
我已经尝试了很多我在这里和通过 Google 找到的例子,但没有任何效果。
我假设你已经这样做了 -
- 您 AdminBanner.ascx.cs 中的 public 属性 公开标签文本 属性 由父页面设置
public string LabelTitleValue
{
get { return LabelTitle.Text; }
set { LabelTitle.Text = value; }
}
- 下面是您应该如何 get/set 用户控件的标签文本。
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;