2011-08-08 56 views
6

我想在我的類庫項目中添加對ScriptManager的引用,而不是ClientScriptManager,有可能嗎?ASP.NET - 在類庫參考中使用ScriptManager

+0

你能改述一下這個問題嗎?我不明白這個問題是什麼。 ScriptManager通常是一個ASP.NET標記,不知道如何將它添加到類庫中。 – Nate

回答

9

我假設你不知道如何在類庫中引用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 
+0

好的!謝謝!但我有一個問題,我不能以這種方式訪問​​方法RegisterClientScriptBlock。你知道爲什麼嗎? –

+0

RegisterClientScriptBlock方法是靜態/共享的。因此,這將工作:'System.Web.UI.ScriptManager.RegisterClientScriptBlock(頁面,page.GetType,「ScriptKey」,「YourScript」,True)' –

+0

行!非常感謝你! –