Установка свойства времени разработки в окне свойств настраиваемого веб-сервера приводит к зависанию или аварийному завершению Visual Studio 2010 - PullRequest
0 голосов
/ 09 ноября 2011

Как видно из моего заголовка, у меня проблема сбоя набора свойств.

Вот сценарий:

  1. Я создал простой пользовательский серверный элемент управления ASP.Net, который генерирует некоторый текст.
  2. Я хотел дать свойство времени разработки для этого текста, чтобы его стиль мог быть доступен для разработчиков из окна свойств.
  3. Все свойства в окне свойств работают, за исключением тех, которые имеюттип System.Web.UI.WebControls.Style, который я создал.

Вот мое свойство:

[Bindable(true)]
[Category("Appearance")]
[Description("The style for the header")]
[Localizable(true)]
public Style HeaderTextStyle
{
  get
  {
    Style s = (Style)(ViewState["HeaderTextStyle"] == null ? Styles.defaultHeaderStyle : ViewState["HeaderTextStyle"]);
    return s;
  }

  set
  {
    ViewState["HeaderTextStyle"] = value;
  }
}

Oh, а Styles.defaultHeaderStyle - это просто свойство внутреннего класса, которое возвращает новыйStyle.

Позвольте мне указать, что зависание / сбой происходит, только когда Я ИЗМЕНЯЮ свойство, поэтому оно не может быть получено из получателя.

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

Что это вызывает?

Спасибо.

1 Ответ

1 голос
/ 10 ноября 2011

Я нашел ответ на мою проблему.

Видите ли, класс Style - это свойство, которое имеет под-свойства и называется complex property . Сложные свойства (свойство, которое имеет подвойства) требуется пользовательское управление состоянием, чтобы использовать состояние просмотра . Классу Style нужны атрибуты времени разработки, чтобы включить постоянство в тегах элемента управления. Так что то, что я написал в своем оригинальном посте, не сработает.

Для полного объяснения посетите: Пример свойств управления сервером из MSDN

Мне удалось реализовать это на этом примере. Я надеюсь, что это будет полезно для других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...