ASP.NET FormView DetailsView и полиморфизм - PullRequest
1 голос
/ 12 февраля 2012

Я пишу главную страницу ASP.NET, которая выполняет общую работу по редактированию мастера / деталей (ValidationSummary, обработка ошибок, всплывающее окно с подробным представлением с использованием диалога jQuery-ui).Он имеет два элемента управления ContentPlaceHolder для основного и подробного видов, ожидается, что основной заполнитель будет содержать GridView, а заполнитель сведений - либо DetailsView, либо FormView.

Основная страницапросто необходимо получить доступ к нескольким базовым членам DetailsView или FormView:

  • метод ChangeMode
  • метод DataBind
  • свойство CurrentMode
  • метод InsertItem
  • Метод UpdateItem

Я был удивлен, увидев, что, хотя DetailsView и FormView имеют одинаковые члены, они (кроме DataBind) не наследуются от общего базового класса или интерфейса.Есть даже два эквивалентных перечисления FormViewMode и DetailsViewMode, так что члены ChangeMode и CurrentMode даже не имеют одинаковую подпись.

Я собираюсь обойти это путем создания класса-оболочки, ноМожет кто-нибудь объяснить, почему они реализованы так?Я накапливаю неприятности, пытаясь использовать их полиморфно?

Мне трудно поверить, что это не было преднамеренным со стороны инженеров Microsoft, поэтому я могу только заключить, что они намеревались препятствовать полиморфному использованию.

1 Ответ

0 голосов
/ 12 февраля 2012

, хотя как DetailsView, так и FormView имеют одинаковых членов, они не унаследован от общего базового класса или интерфейса.

Да, это:

Подробности: CompositeDataBoundControl, IDataItemContainer, INamingContainer, ICallbackContainer, ICallbackEventHandler, IPostBackEventHandler, IPostBackContainer, IDataBoundItemControl, IDataBoundControl, IFieldControl

FormView: CompositeDataBoundControl, IDataItemContainer, INamingContainer, IPostBackEventHandler, IPostBackContainer, IDataBoundItemControl, IDataBoundControl, IRenderOuterTableControl

...