ASP.NET - 在类库引用中使用ScriptManager

7

我想在我的类库项目中添加一个对ScriptManager的引用而不是ClientScriptManager,这是否可行?


你能再将问题表述一遍吗?我不明白问题所在。ScriptManager通常是ASP.NET标签,不确定如何将其添加到类库中。 - Nate
1个回答

11

我假设您不知道如何在类库中引用ScriptManager,因为通常这些WebControls不被引用。此外,我认为您还需要知道如何在静态上下文中从类库获取对页面的引用。

要获取ScriptManager,您需要在类库项目中添加对System.Web.Extensions的引用。

要在静态上下文中获取对页面的引用,您需要添加System.Web命名空间,然后以下内容返回当前页面的ScriptManager:

C#:

var http = System.Web.HttpContext.Current;
if ((http != null)) {
    var page = http.CurrentHandler as Web.UI.Page;
    if (page != null) {
        var scriptManager = System.Web.UI.ScriptManager.GetCurrent(page);
    }
}

VB.NET:

Dim http = Web.HttpContext.Current
If Not http Is Nothing Then
    Dim page = TryCast(http.CurrentHandler, Web.UI.Page)
    If Not page Is Nothing Then
         Dim scriptManager = System.Web.UI.ScriptManager.GetCurrent(page)
    End If
End If

好的,谢谢!但是我有一个问题,我无法以这种方式访问RegisterClientScriptBlock方法。你知道为什么吗? - Michel Andrade
RegisterClientScriptBlock方法是静态/共享的。因此,以下代码可以正常工作:System.Web.UI.ScriptManager.RegisterClientScriptBlock(page, page.GetType, "ScriptKey", "YourScript", True) - Tim Schmelter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接