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