gpt4 book ai didi

asp.net - 一个页面上只能存在一个脚本管理器实例

转载 作者:行者123 更新时间:2023-12-01 05:45:10 24 4
gpt4 key购买 nike

我设计了一个 ASP.NET web 用户控件,并使用掩码编辑器和脚本管理器,我总是在运行时得到一个未设置为对象异常实例的对象引用。

堆栈跟踪是:

[InvalidOperationException: 只能将 ScriptManager 的一个实例添加到页面中。]
System.Web.UI.ScriptManager.OnInit(EventArgs e) +384613
System.Web.UI.Control.InitRecursive(控件命名容器)+333
System.Web.UI.Control.InitRecursive(控件命名容器)+210
System.Web.UI.Control.InitRecursive(控件命名容器)+210
System.Web.UI.Control.InitRecursive(控件命名容器)+210
System.Web.UI.Control.InitRecursive(控件命名容器)+210
System.Web.UI.Control.InitRecursive(控件命名容器)+210
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378

这是什么原因造成的?
谢谢

最佳答案

您在哪里声明 ScriptManager - 在 UserControl、承载控件的页面或 MasterPage 中?

我建议(如果可以的话 - 主要警告是在服务器上安装 .NET 3.5)在 MasterPage(或页面级别,如果您不使用 MasterPages)中定义 ScriptManager,然后使用 ScriptManagerProxy在您的用户控件中:

Enables nested components such as content pages and user controls to add script and service references to pages when a ScriptManager control is already defined in a parent element.



编辑添加:

如果您不能使用 ScriptManagerProxy,请查看 ToolkitScriptManager来自 AJAX 控件工具包 - 它为您提供了 .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 实例。

关于asp.net - 一个页面上只能存在一个脚本管理器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2825738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com