访问/设置ASP.NET用户控件的对象属性的属性值 - 使用Decalarative语法

时间:2011-08-18 15:40:49

标签: asp.net properties user-controls object-properties

我觉得我记得几天过去的一篇文章解释了如何DECLARATIVY设置对象属性的值,作为ASP.NET用户控件的属性公开。

我的情况是我有一个包含LinkBut​​ton的用户控件,当然还包括其他内容。我希望User Control的使用者能够在用于实现用户控件的声明性语法中设置链接按钮的TEXT值。

这是用户控件(设计师)......

<div id="toolbar">
    <ASP:LinkButton runat="server" id="btnFirst"    />
    <ASP:LinkButton runat="server" id="btnSecond"   />
    <ASP:LinkButton runat="server" id="btnThird"    />
    <ASP:LinkButton runat="server" id="btnFourth"   />
</div>

以下是用户控件后面代码中定义的属性...

public partial class Lookuptoolbar: UserControl
{
    public LinkButton FourthButton
    {
        get { return (this.btnFourth); }
    }
}

当我在一个页面中包含控件时,我希望能够使用以下DECLARATIVE语法设置我的第四个按钮的TEXT ......

   <UC:MyControl id="uc1" runat="server" FourthButton_Text="Click Me!"/>

很久以前,我曾在某处读过一次,您可以使用下划线语法访问对象的属性(作为用户/服务器控件的属性公开)。这对我来说根本不起作用。这是不再允许的还是我错过了什么?有没有办法做到这一点?

谢谢你, 加里

2 个答案:

答案 0 :(得分:2)

好的......对于任何可能感兴趣的人,我想我已经找到了答案,或者至少是它的开头。语法将使用HYPHEN而不是下划线。所以正确的语法是。

 <UC:MyControl id="uc1" runat="server" FourthButton-Text="Click Me!"/> 

当访问复杂类型的“子属性”时,可能会有更多;我没有详细介绍过,但Microsoft Press(ISBN 0-7356-1582-9)的“开发Microsoft ASP.NET服务器控件和组件”一书在第218-222页讨论了这一点。

如果有人学到更多东西,我很乐意听到它,否则我希望这有助于那里的人!

-Gary

答案 1 :(得分:0)

我从未听说过或看到任何人使用您所谈论的方法(使用下划线来访问声明性语法中的对象属性)。

执行所需操作的一种方法是在用户控件上公开与LinkBut​​ton的text属性交互的FourthButtonText属性:

public string FourthButtonText
{
    get { return this.btnFourth.Text; }
    set { this.btnFourth.Text = value; }
}