0

javascript のメソッドと c# のメソッドがあり、ボタンをクリックして両方を呼び出したいと思います。

最初に、onclick という入力を取得するので、という名前の c# メソッドを呼び出したいと思います。'Find_Direction'次に、という名前の javascript メソッドの後に呼び出しますcalcRoute

私はこれを試していましたが、運がありませんでした:

<asp:Button id="Button1" UseSubmitBehavior="False" value="GetDirections" onclick="calcRoute" OnClientClick="Find_Direction" runat="server"/>

次のエラーがポップアップしました:

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS1061: 'ASP.findroute_aspx' does not contain a definition for 'calcRoute' and no extension method 'calcRoute' accepting a first argument of type 'ASP.findroute_aspx' could be found (are you missing a using directive or an assembly reference?)
4

2 に答える 2

3

onClick イベントで JavaScript 関数名を指定しています。ここに C# 関数名を入れます

C# コード:

 protected void  Find_Direction (object sender, EventArgs e)
 {
   // do your work

   // Register your javascript function

    Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "  <script>calcRoute();</script>");
 }

あなたのマークアップ:

<asp:Button id="Button1" value="GetDirections" onclick="Find_Direction" runat="server"/>

ケース 2 : サーバー側関数の前に JavaScript 関数を呼び出す

JavaScript 関数

 function calcRoute() {

        alert('test')
        return true;
    }

あなたのマークアップ

 <asp:Button id="Button1" value="GetDirections" onclick="Find_Direction " OnClientClick="return Find_Direction()" runat="server"/>

これにより、javascript関数を呼び出してからサーバー側に呼び出すことができますが、サーバー側関数を呼び出すためにjavascript関数からtrueを返すようにしてください。

問題を解決できることを願っています。:)

于 2013-03-03T09:02:59.443 に答える
2

コード ビハインド (aspx.cs または aspx.vb ファイル) に というイベント ハンドラーが必要ですcalcRoute

JS を最初に実行する場合は、JS 関数を指す OnClientClick と C#/VB メソッド (イベント ハンドラー) を指す OnClick を使用して、実行している方法で実行できるはずです。

JS が C# コードの後に​​確実に呼び出されるようにする場合は、バックエンドでクリックを処理してから、起動スクリプトを登録して JS をブラウザに送り返す必要があります。更新パネルを使用していない限り、これにより完全なポストバックが発生します。イベント ハンドラーで、スタートアップ スクリプトを登録してPage.RegisterStartupScript、javascript コマンドをブラウザーに送り返すことができます。この場合、OnClientClick をまったく使用したくないでしょう。

于 2013-03-03T09:03:40.363 に答える