c# - 在 UserControl 内的 asp.net 标签上使用 AssociatedControlID

标签 c# asp.net user-controls

免责声明:我正在尝试做的事情可能非常错误,请随时为我提供一种完全不同的方法。

基本上,我试图创建一个 UserControl 来包装一个 asp 标签,并在我的项目的顶部添加一些额外的功能(例如,一些改变标签服务器端行为的属性)。控件的html很简单:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Label.ascx.cs" Inherits="MyNamspace.Label" %>
<asp:Label runat="server" ID="lblThis" />

它背后的许多属性看起来像这样:

public string Text
{
    get { return lblThis.Text; }
    set { lblThis.Text = value; }
}

虽然我被 AssociatedControlID 困住了,但我很确定这是因为 lblThis 不知道页面上的任何其他控件,它被孤立地困住了。最终我收到错误消息“无法找到与标签‘lblThis’关联的 ID 为‘foo’的控件。”

所以我的问题是,是否有办法让 AssociateControlID 以这种方式工作,或者是否有更好的方法向 asp 控件添加功能?

最佳答案

我知道这是一个老问题,但我今天在清理一些旧的 Web 表单页面时遇到了同样的问题。 TBH,我懒得将所有用户控件重新创建为自定义控件,所以我想看看是否可以在不做太多更改的情况下完成。

事实证明实际上非常简单。如果您的用户控件的 ID 为 Foo,并且它包含(例如)ID 为 Bar 的文本框,则标签变为:

<asp:Label runat="server" AssociatedControlID="Foo:Bar"...>

希望这对遇到同样问题的人有所帮助。

关于c# - 在 UserControl 内的 asp.net 标签上使用 AssociatedControlID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23462679/

相关文章:

c# - 抑制系统覆盖,Windows Phone 8.1 (Silverlight)

C# 添加一个数组到 SQL CE 数据库

asp.net - 如何创建数据库并在安装过程中填充它

asp.net - 处理可选查询参数

c# - 创建自定义面板控件

c# - 在等待带有进度报告的 DownloadFileAsync() 时暂停主线程

c# - 释放鼠标时组合框意外自动关闭

c# - FileStreamResult 是否关闭 Stream?

XAML中的WPF MVVM用户控件数据绑定(bind)不起作用

wpf - ContentControl 更改 GotFocus 上的 ContentTemplate