UserControl значение по умолчанию в свойстве

У меня есть UserControl с несколькими логическими свойствами. Я хотел бы, чтобы они были установлены в true по умолчанию, если не установлены явно в .aspx-страница или, по крайней мере, принудительно объявить их, если нет способа установить значение по умолчанию. Я знаю, что есть способ сделать это, потому что многие элементы управления имеют необходимые свойства, которые нарушают ваше приложение при попытке запустить его, и они не объявлены.

Как это сделать?

пример:

<je:myControl runat="server" id="myControl" showBox="False">

Я хочу, чтобы система либо сломать или установить значение по умолчанию "true", если showBox остается вне этого объявления.

спасибо!

4 ответов


определите свои свойства с их значениями по умолчанию, например:

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
}

или в конструкторе элемента управления, устанавливать значения по умолчанию :

public MyControl()
{
    _ShowBox = false;
}

или исключение броска, если оно не назначено:

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
    get { return _ShowBox; }
}

Я знаю, что опоздал, но я просто хотел упомянуть, что

[DefaultValue(false)]

не будет устанавливать атрибут false. Смотрите: http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx - ... Он говорит:

" DefaultValueAttribute не приведет к автоматической инициализации члена со значением атрибута. Необходимо задать начальное значение в коде."

этот атрибут предназначен только для указания в Visual Studio Конструктор, который вы считаете значением по умолчанию. Если кто-то с помощью вашего элемента управления изменяет это значение, оно будет отображаться полужирный сигнализировать, что это значение не является значением по умолчанию.


просто установите желаемое значение по умолчанию при объявлении переменной:

class myControl
{
    private bool _showBox = true;

    [PersistenceMode(PersistenceMode.Attribute), DefaultValue(false)]
    public bool showBox
    {
        get { return _showBox; }
        set { _showBox = value; }
    }
}

необязательно можно добавить атрибут DefaultValueAttribute для designer.


ReSharper рекомендует использовать свойство auto и установить значение по умолчанию в конструкторе, например:

public class MyControl
{
  public MyControl()
  {
    ShowBox = true;
  }

  public bool ShowBox { get; set; }
}