Создать свойство в ASP.Net Control для C # и ASPX - PullRequest
2 голосов
/ 22 октября 2009

Я пытаюсь создать собственное свойство в расширенном элементе управления, чтобы к нему можно было обращаться как в 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>

И я также использую два свойства вместо того, чтобы использовать только одно ... но я попытался объединить их в одно ... но мне не удалось ... поэтому в ASPX появляется только IconName2.

Итак ... Я был бы очень признателен, если бы вы объяснили мне это лучше. Код, который вы видите здесь, был результатом долгих исследований в интернете и множества попыток. (

1 Ответ

2 голосов
/ 22 октября 2009

Если вы хотите, чтобы свойство с предопределенным, ограниченным набором значений использовалось в элементе управления 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;
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...