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; }
}