我有一个asp.net应用程序,它使用Web部件框架允许用户自定义其界面。其中一个功能是可用的Web部件目录,默认情况下提供一个,但如果您想更改布局等,可以覆盖它。
override void RenderCatalogPart(HtmlTextWriter writer, CatalogPart catalogPart)
据我所知,这是唯一的方法。目前我正在创建一个包含所有必要元素的面板,并使用面板的RenderControl方法将其输出到htmlwriter。到现在为止还挺好。当我尝试使用相同的RenderControl方法向我的面板添加radtooltip时出现问题,并且我收到以下运行时错误:
页面不能为空。请确保在ASP.NET请求的上下文中执行此操作。
我可以看到为什么这可能是一个问题,因为工具提示可能使用javascript并且必须将其写入页面 - 但RenderCatalogPart方法不知道它将输出到哪个页面。有什么方法可以解决这个问题,还是我不得不提出替代方案?
我已经在telerik网站上发布了这个内容,但我也在这里问过,任何人都有任何想法。
感谢。
答案 0 :(得分:1)
Telerik ASP.NET控件需要MS AJAX ScriptManager控件。我想这也是他们想要访问页面的原因 - 获取对ScriptManager的引用。尝试将工具提示的RegisterWithScriptManager属性设置为false,然后查看控件是否呈现。
答案 1 :(得分:0)
这里的问题是必须在PreRender中创建工具提示并将其添加为控件,以便它可以将其脚本添加到ScriptManager中。
在PreRender()方法中创建工具提示的集合,然后将它们写入httpwriter,如上面RenderCatalogPart中所示,可以解决问题。