Проверка свойства пользовательской веб-части, заданного пользовательской частью инструментов?
Вопрос
Я создаю пользовательскую веб-часть с настраиваемой частью инструментов для редактирования ее настраиваемых свойств.
Мне интересно, где мне следует проверять значения.
Я вижу два места, где я могу проверить.
Либо в самом свойстве:
private int? m_MaxNumberOfSomething;
[Browsable(false)]
[Category(Constants.WebPartsExtendedPropertiesCategoryName)]
[DefaultValue(5)]
[WebPartStorage(Storage.Personal)]
public int? MaxNumberOfSomething
{
get
{
return m_MaxNumberOfSomething;
}
set
{
if (value.HasValue && value < 1) throw new WebPartPageUserException("At least one !");
m_MaxNumberOfSomething = value;
}
}
Или примените изменения метода Toolpart:
public override void ApplyChanges()
{
int maxNumberOfSomething;
if (!int.TryParse(txtMaxNumberOfSomething.Text, out maxNumberOfSomething))
{
throw new WebPartPageUserException("At least one");
}
ParentWebPart.MaxNumberOfSomething = maxNumberOfSomething;
}
Есть ли какой-нибудь 3-й способ?
Как правильно добавить такую проверку?
Решение
Я бы сделал это в set
тер.
Поскольку вы в любом случае генерируете исключение, будет чище не позволять пользователю set
ценность на первом месте.Если бы вы выполняли проверку только в ApplyChanges
метод, другой код мог бы работать с уже неправильно установленным значением.
Подтвердить в set
, поэтому пользователю даже не разрешено записывать недопустимые данные в вашу переменную. Вот сообщение в блоге, показывающее именно этот метод, но в любом случае вы делаете это правильно.