2011-06-28 33 views
2

java-scriptからポストバックをトリガーしようとしており、イベント引数を渡しています。私はポストバックをトリガーすることができます**しかし、イベントの引数を渡すことはできません。ClientScript.GetPostBackEventReferenceの使用中にjavascriptからコードビハインドにイベント引数を渡す

以下の機能は動作しません。 argsのパラメータがClientScript.GetPostBackEventReferenceのようではありません。

<script type="text/javascript"> 

function TriggerServerSideClick(args) { 
    //btnDummy is a asp.net server-side button control    
    <%=ClientScript.GetPostBackEventReference(btnDummy, args , true)%> 

    //tried this -> <%= 'ClientScript.GetPostBackEventReference 
    //  (btnDummy,' + args + ', true)' %> , 
    //  but i guess i am definitely missing something. 
} 

</script> 

ここでは何が欠けていますか?

は、私は次のように

__doPostBack('btnDummy', args); 

を動作することを知っているが、それは最終的に変更し、代わりにClientScript.GetPostBackEventReferenceを試みることができるよう__doPostBackから離れて滞在したいです。

お時間をいただきありがとうございます。

@Brian:フォローアップに感謝します。私はあなたのプレースホルダのアプローチを試みたが、私はJavaScriptのエラーを取得しています。 (メッセージ:予想 ';'
ここではviewsource抜粋です:

var postbackUrl = '__doPostBack('ctl00$MainContent$btnDummy','{0}')'; 

    function TriggerServerSideClick(args) { 

     var url = String.format(postbackUrl, args); 
     eval(url); 
    } 
+0

:私は、JavaScriptのstring.replace主流を使用 - 私は、クライアント側のString.Formatのを使用しなかったことが唯一の違い、。評価されると、エンディングはありません。 –

+0

あなたの執拗さをもう一度おねがいします。それはうまくいかず、Firebug、Chrome Devツールでもデバッグを試みました。何が欠けているか分かりませんか?スニペット:var postbackUrl = '__doPostBack(' btnDummy '、' {0} ');'; – StudentForever

答えて

3

これを試してみてください:

var postbackUrl = '<%=ClientScript.GetPostBackEventReference(btnDummy, "{0}", true)%>'; 

function TriggerServerSideClick(args) { 
    var url = String.format(postbackUrl, args); 
    eval(url); 
} 

引数があるべきプレースホルダを入れ、その後、クライアント側を使用しますメソッドを使用してプレースホルダ(クライアント側のString.formatメソッド)を置き換え、ポストバックに使用します。

HTH。

+0

ありがとう、私が言ったように、明示的に__doPostBack(...)メソッドを呼び出してClientScript.GetPostBackEventReferenceを優先したいとは思わない。 – StudentForever

+0

ありがとうございます。 OK問題は、ClientScript.GetPostBackEventReferenceのオーバーロードの選択ではありません[リンク](http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.getpostbackeventreference.aspx)引数は変数を送信しています「My Argument」のようなハードコードされた文字列ではありません。私は引数としてjsonの文字列表現を送信しようとしています。例:<%= Page.ClientScript.GetPostBackEventReference(new PostBackOptions(btnDummy、jsonStrArgs))%> – StudentForever

+0

更新されました。クライアント/サーバーの直接のミキシングとマッチングはありませんが、回避策を使用することができます。 –

2

私は今、この問題に取り組んでいた時、ブライアン・メインズの答えが正しい方向に送られました。それはpostbackUrl文字列内で、最後にセミコロンが欠落しています

//js 
args = someComplicatedDynamicStuff(); 
myPostback = <%= Page.ClientScript.GetPostBackEventReference(this, "args") 
        .Replace("'", "\\'") %>; // server-side replace to 
               // inject string delimiters 
eval(myPostback.replace('args',args)); 
関連する問題