免责声明:我正在尝试做的事情可能非常错误,请随时为我提供一种完全不同的方法。
基本上,我试图创建一个 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/