0

スタンドアロンのアプリを作成しましたが、コールバックで動作します。それをより大きなアプリに統合しようとしていますが、いくつかの問題があります。

私のスタンドアロン アプリのコールバック コード:

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 で、「ページ」インターフェイス名が必要であるというエラーが表示されます。

コールバック コード自体で、「非静的コンテキストで静的プロパティ 'clientSript' にアクセスできません」という ClientScript を参照するエラーが発生します。

私はこれらの用語をよく理解していません...私はCSの学位などを持っていないので、誰かがこれを説明できれば、それは素晴らしいことです(おそらく最高です)、ありがとう!

4

1 に答える 1

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
于 2013-06-21T14:28:15.093 に答える