0

e 以下の条件に少し苦労しています。Web ページに ICallBackEventHandler を実装しました。バックエンドからの戻り値が JavaScript 関数で読み取れないことを除いて、すべてがスムーズに実行されます。コンソールでは、投稿は正しい戻り値を表示しますが、関数の引数は常に空です。

public partial class Intro : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
private string eventType = String.Empty;


    protected void Page_Load(object sender, EventArgs e)
    {

        //ICallBack event handler
        ClientScriptManager cm = Page.ClientScript;
        string cbReference = cm.GetCallbackEventReference(this, "arg", "HandleResult", "");

        string cbScript = "function RaiseEvent(arg){" + cbReference + ";}";
        cm.RegisterClientScriptBlock(this.GetType(), "RaiseEvent", cbScript, true);
        //End of ICallBack event handler
    }


 }

public void RaiseCallbackEvent(string eventArgument)
    {
        eventType = eventArgument;
    }
    public string GetCallbackResult()
    {
        return "simple";
    }

そして、フロントエンドには次のシナリオがあります: this を使用してボタンクリックでイベントをトリガーします:RaiseEvent("start")そして、 this 関数で結果を処理しています:

function HandleResult(arg) {
            alert(arg); // HERE THE ARGUMENT IS ALWAYS NULL OR EMPTY !!!
        }

これが正しく実行されない理由と、返された引数の値にアクセスできない理由を突き止めてください。前もって感謝します。

4

1 に答える 1

0

これは通常、Page.IsPostBack を使用していないことが原因です。

protected void Page_Load(object sender, EventArgs e)
{

   if (!Page.IsPostBack)
   {
    //ICallBack event handler
    ClientScriptManager cm = Page.ClientScript;
    string cbReference = cm.GetCallbackEventReference(this, "arg", "HandleResult", "");

    string cbScript = "function RaiseEvent(arg){" + cbReference + ";}";
    cm.RegisterClientScriptBlock(this.GetType(), "RaiseEvent", cbScript, true);
    //End of ICallBack event handler
    }
}
于 2014-08-05T21:16:50.420 に答える