我觉得我记得几天过去的一篇文章解释了如何DECLARATIVY设置对象属性的值,作为ASP.NET用户控件的属性公开。
我的情况是我有一个包含LinkButton的用户控件,当然还包括其他内容。我希望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!"/>
很久以前,我曾在某处读过一次,您可以使用下划线语法访问对象的属性(作为用户/服务器控件的属性公开)。这对我来说根本不起作用。这是不再允许的还是我错过了什么?有没有办法做到这一点?
谢谢你, 加里
答案 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)
我从未听说过或看到任何人使用您所谈论的方法(使用下划线来访问声明性语法中的对象属性)。
执行所需操作的一种方法是在用户控件上公开与LinkButton的text属性交互的FourthButtonText属性:
public string FourthButtonText
{
get { return this.btnFourth.Text; }
set { this.btnFourth.Text = value; }
}