我设计了一个ASP.NET web用户控件,并且使用了maskeditor和scriptmanager,我总是在运行时得到一个没有设置为对象异常实例的对象引用。
Stacktrace是:
[InvalidOperationException:只能将一个ScriptManager实例添加到页面中。] System.Web.UI.ScriptManager.OnInit(EventArgs e)+384613 System.Web.UI.Control.InitRecursive(Control namingContainer)+333 System.Web.UI.Control.InitRecursive(Control namingContainer)+210 System.Web.UI.Control.InitRecursive(Control namingContainer)+210 System.Web.UI.Control.InitRecursive(Control namingContainer)+210 System.Web.UI.Control.InitRecursive(Control namingContainer)+210 System.Web.UI.Control.InitRecursive(Control namingContainer)+210 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+378
是什么原因引起的? 感谢
答案 0 :(得分:2)
您在哪里声明ScriptManager - 在UserControl中,承载控件的页面,还是在MasterPage中?
我建议(如果可以 - 主要警告是在服务器上安装.NET 3.5)在MasterPage中定义ScriptManager(如果你没有使用MasterPages,则为页面级别),然后使用{{3在你的用户控件中:
当已在父元素中定义ScriptManager控件时,启用嵌套组件(如内容页面和用户控件)以向页面添加脚本和服务引用。
编辑以添加:
如果您无法使用ScriptManagerProxy,那么请查看AJAX控件工具包中的ScriptManagerProxy - 它为您提供了.NET 3.5 ScriptManager的许多功能,而无需使用3.5,包括.GetCurrent方法:
ScriptManager scriptManager = ToolkitScriptManager.GetCurrent(Page);
if (null != scriptManager) {
// Create a new ToolkitScriptManager and add it to the page.
}
或者,您可以通过迭代Page的控件集来查找ScriptManager实例来自己执行查找。
答案 1 :(得分:0)
如果您使用的是Telerik控件,则脚本管理器无法正常工作。
我们可以使用Telerik控件或ScriptManager
答案 2 :(得分:-1)
我认为您的错误与“只能将一个ScriptManager实例添加到页面”更相关。
检查页面上是否有多个ScriptManager