【问题标题】:Create Property in ASP.Net Control to C# and ASPX在 ASP.Net 控件中创建属性到 C# 和 ASPX
【发布时间】:2010-12-08 22:11:12
【问题描述】:

我正在尝试在扩展控件中创建自定义属性,以便可以在 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 = 图标。 //名字会出现在这里 但如果我这样做,它们就不会出现:

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

而且我还使用两个属性而不是只使用一个...但我尝试将它们组合成一个...但我没有成功...所以只有 IconName2 出现在 ASPX 中。

所以...如果您能更好地解释我,我将不胜感激。 您在这里看到的代码是在互联网上长期研究和大量尝试的结果。 :(

【问题讨论】:

    标签: c# asp.net controls properties


    【解决方案1】:

    如果您希望在 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;
        //...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 2012-11-06
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多