覆盖受保护的内部方法

时间:2010-07-15 02:33:40

标签: c# asp.net web-controls overrides

我正在将一个Web应用程序重写为ASP.Net 4.0并且包含一个Menu控件(自然地绑定到SiteMap文件)。虽然我喜欢新的RenderingMode属性,但我很讨厌它会自动在页面底部包含一些javascript来为菜单设置动画。

我的偏好是使用jQuery进行更好的控制,但是关闭它实际上非常困难。在一个非常重的击球手的帮助下,我已经走到了我发现ASP.Net 4.0 Menu控件有一个内部OnPreRender方法的地步:

internal void OnPreRender(EventArgs e, bool registerScript);

如何覆盖此方法以便我可以调用:

base.OnPreRender(e, false);

此刻尝试时,我收到Visual Studio的错误,说“方法'OnPreRender'没有重载需要2个参数”。

2 个答案:

答案 0 :(得分:3)

您应该可以protected internal protected引用internal方法。如果方法只是internal,那么你可能会失去运气。

查看ASP.NET 4菜单控件,它只有一个OnPreRender覆盖:

protected internal override void OnPreRender(EventArgs e);

所以你应该能够覆盖它。不确定OnPreRender(EventArgs e, bool registerScript)来自哪里(也许是internal),但是基类没有(或者它不可访问)的事实是你的问题。

答案 1 :(得分:0)

不是一个直接的答案,但将任何IHeirarchicalDataSource的内容(例如站点地图文件)转储到<ul>是非常简单的,任何数量的jquery菜单产品都可以咀嚼和制作它们。