2013-06-21 69 views
0

我創建了一個應用程序獨立,它適用於我的回調。我正試圖將其整合到一個更大的應用程序中,並遇到一些問題。C#ASP回調添加類問題

我獨立的應用程序回調代碼:

public partial class Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     //unimportant specific code 

     //Get the Page's ClientScript and assign it to a ClientScriptManger 
     ClientScriptManager cm = Page.ClientScript; 

     //Generate the callback reference 
     string cbReference = cm.GetCallbackEventReference(this, "arg", "HandleResult", ""); 

     //Build the callback script block 
     string cbScript = "function CallServer(arg, context){" + cbReference + ";}"; 

     //Register the block 
     cm.RegisterClientScriptBlock(this.GetType(), "CallServer", cbScript, true); 

    } 


    public void RaiseCallbackEvent(string eventArgument) 
    { 

     //unimportant specific code 

     //This method will be called by the Client; Do your business logic here 
     //The parameter "eventArgument" is actually the paramenter "arg" of CallServer(arg, context) 

     GetCallbackResult(); //trigger callback 
    } 

    public string GetCallbackResult() 
    { 

     //unimportant specific code 

     return callbackMessage; 
    } 

    //more specific unimportant stuff 

} 

爲什麼我不只是類添加到我的更大的應用程序是這樣的:

public class My_App_ItemViewer : abstractItemViewer, System.Web.UI.Page, System.Web.UI.ICallbackEventHandler 

在Visual Studio中,我得到一個表示'page'接口名稱的錯誤。

在回調代碼本身,我得到一個錯誤的地方說引用ClientScript「不能訪問靜態屬性‘clientSript’在非靜態上下文」。

我真的不明白這些術語......我沒有一個CS學位或任何東西,因此,如果任何人都可以解釋這一點,那將是巨大的(甚至可能是最大的),謝謝!

回答

2

C#不支持多重繼承,所以你不能這樣做以下行:

public class My_App_ItemViewer : abstractItemViewer, System.Web.UI.Page, System.Web.UI.ICallbackEventHandler 

只是爲了澄清,你已經寫了上面的方式,C#編譯器認爲abstractItemViewer是一個類,你是試圖繼承。然後編譯器看到「System.Web.UI.Page」部分,並且正在尋找一個名爲的接口,但它找不到它,因爲System.Web.UI.Page是一個類而不是接口;從而出錯。

你可以,但是,實現多個接口,所以你可以做到以下幾點:

public class My_App_ItemViewer : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler, IAbstractItemViewer 
+0

我想我跟着你,但對我來說,「abstractItemViewer」是一個單獨的類。應用你的知識,看來錯誤在於c#正在將abstractItemViewer看作是一個接口而不是一個類。此外,它看起來像你只能有一個「繼承類」(這可能是你說的多重繼承的東西。所以,我怎麼能解決這個得到什麼?讓另一個階級「myCallBack函數」,並繼承my_app_viewer? – yoyo

+0

所以,我只是去我的抽象類,並添加了「system.web.ui.page」繼承,它至少編譯。我正在做一些測試,看看它是否會實際工作... – yoyo

+0

現在的問題是,實際回調的javascript腳本顯示在頁面源代碼。這是因爲我已經分離System.Web.UI.Page和System.Web.UI.ICallbackEventHandler到兩個不同的頁面? – yoyo