在ASP.Net Control中创建属性到C#和ASPX

时间:2009-10-21 23:51:06

标签: c# asp.net controls properties

我正在尝试在扩展控件中创建自定义属性,以便它可以在ASPX和C#中被访问。 问题实际上并没有创建它......因为我设法通过应用以下代码来实现它:

public static class Icon
{
    public static string activityMonitor = "activityMonitor.png";
    public static string addBlankPage = "addBlankPage.png";
    public static string addComment = "addComment.png";
    public static string addPageTable = "addPageTable.png";
}


public class myButtonIcon : LinkButton
{
    public myButtonIcon()
    {
    }

    [Bindable(false)]
    [Category("Properties")]
    [DefaultValue("")]
    [Localizable(true)]

    public string IconName { get; set; }
}

但是我确信这不是正确的做法......出于很多原因:(

例如:

我能做到:btnIcon.IconName = Icon。 //名称将显示在此处 但如果我这样做,他们就不会出现:

<myControl:myButtonIcon ID="btnTest" runat="server" IconName=" //names do not appear here></myControl:myButtonIcon>

我也使用两个属性而不只使用一个...但我试图将它们组合成一个...但我没有成功...所以只有IconName2出现在ASPX中。 / p>

所以......如果你能更好地解释我,我真的很感激。 你在这里看到的代码是对互联网进行长期研究和大量尝试的结果。 :(

1 个答案:

答案 0 :(得分:2)

如果您想要在ASPX控件中使用具有预定义的有限值集的属性,则需要使用枚举:

public enum Icon
{
    ActivityMonitor,
    AddBlankPage,
    //...
}

虽然枚举不能被字符串值支持(不幸的是?)所以你仍然需要一些其他代码来确定根据所选枚举值使用的真实文件名:

public Icon Icon { get;set; }

//in some method
switch(this.Icon)
{
    case Icon.ActivityMonitor:
        this.IconUrl = "activityMonitor.png";
        break;
    case AddBlankPage:
        this.IconUrl = "addBlankPage.png";
        break;
    //...
}