Переопределение защищенных внутренних методов

Я переписываю веб-приложение для ASP.Net 4.0 и включил элемент управления Menu (естественно, связанный с файлом SiteMap). Мне нравится новое свойство RenderingMode, но я ненавижу тот факт, что оно автоматически включает в себя некоторый JavaScript в нижней части вашей страницы для анимации меню.

Я бы предпочел больший контроль с помощью jQuery, но отключить его оказалось очень сложно. С некоторой помощью очень сильного нападающего я дошел до того, что обнаружил, что элемент управления ASP.Net 4.0 имеет внутренний метод OnPreRender:

internal void OnPreRender(EventArgs e, bool registerScript);

Как переопределить этот метод, чтобы я мог вызвать:

base.OnPreRender(e, false);

При попытке в данный момент я получаю сообщение об ошибке из Visual Studio, в котором говорится, что "Нет перегрузки для метода" OnPreRender "принимает 2 аргумента".

2 ответа

Решение

Вы должны иметь возможность ссылаться на protected internal методы как они есть protected или же internal, Если метод просто internal вам может быть не повезло.

Глядя на ASP.NET 4 меню управления, он имеет только один OnPreRender переопределять:

protected internal override void OnPreRender(EventArgs e);

Так что вы должны иметь возможность переопределить это. Не уверен где OnPreRender(EventArgs e, bool registerScript) приходит (возможно, это internal), но тот факт, что базовый класс этого не делает (или он недоступен), является вашей проблемой.

Не прямой ответ, но довольно просто выгрузить содержимое любого IHeirarchicalDataSource, такого как файл карты сайта, в <ul> который любое количество продуктов JQuery меню может жевать и делать пюре.

Другие вопросы по тегам