3

重複の可能性:
c#からjavascript関数を呼び出す方法

C#のコードビハインドでボタンクリックからjavascript関数を呼び出す方法はありますか?つまり、基本的に登録フォームがあり、ボタンをクリックすると、すべてのデータがコードビハインドで処理され、フォームが送信されます。しかし、JavaScriptを実行する必要があり、ボタンをクリックしてコードビハインドで実行する必要があります。

だから次のようなもの:

    protected void btnDoRegister_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
         C# code is here doing form processing
         // Now I need to Execute javascript here.
    }

これは可能ですか?可能であれば、どうすればよいですか?

ありがとう!

4

4 に答える 4

4
protected void btnDoRegister_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
     C# code is here doing form processing
     // Now I need to Execute javascript here.
     string script = "<script type=\"text/javascript\"> functionToExecute(); </script>";
     ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", script);
}
于 2012-06-28T14:37:31.013 に答える
0

頭のてっぺんから見える方法は2つあります。

1つ目は、JavaScript側でAJAXポーリングを実行することです。それは、REST APIなどを介して行う必要のある変更をポーリングでき、C#コードはその変更のリストを更新できます。

2つ目は、javascriptソケットio実装を使用し、持続的接続を維持することです。

最初の方法を強くお勧めしますが、2番目の方法は環境に応じたオプションです。

于 2012-06-28T14:36:39.750 に答える
0

javascriptはclient(ブラウザ)で実行されるため、サーバーでjavascriptを実行することはできません。ポストバック後にjavascriptを実行できますが、必要になることはめったにありません。通常、Javascriptはクライアント側で実行され、リクエストがサーバーで受信されてサーバーで実行される前に実行されます。このようにして、btnDoRegisterにバインドされた2つのイベントがあり、1つはクライアントで実行され、もう1つはサーバーで実行されます。

Page_Loadで、JavaScriptイベントをボタンでバインドします。

コードビハインド

btnDoRegister.Attributes.Add("onclick", "funForButton();");

aspxHTMLで

<script language="javascript" type="text/javascript">     
function funForButton()
{
   alert("About to send request to server");
}

</script>

すでに発生しているサーバーイベント

protected void btnDoRegister_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
     C# code is here doing form processing
     // Now I need to Execute javascript here.
}
于 2012-06-28T14:45:05.693 に答える
0

私が正しく理解している場合は、ボタンをクリックして、JavaScriptで処理を実行してから、サーバーサイドに戻り、C#コードを実行して、JavaScriptを(クライアントで)実行して終了します。

私がそれを正しく理解したと仮定しましょう、そしてあなたは3つのことをしなければならないでしょう。

まず、OnClientClick = "return yourfunction();"を追加します aspxページのボタンに移動します。サーバーサイドコードを実行するかどうかに応じて、javascriptのyourfunction()がfalseまたはtrueを返すことを確認してください。

次に、btnDoRegister_Clickでc#コードをコーディングします。そして、この最後に、セッション変数にjavascript呼び出しを追加し、これをaspxコードで使用します。

例:c#

String newScript = ""

If (Session("yourscript") = Nothing) { Session("yourscript") = "" }

newScript = String.Format("<script type=text/javascript>")

newScript = String.Format("{0}yoursecondscript()", newScript)

newScript = String.Format("{0}</script>", newScript)

Session("yourscript") = newScript

次に、aspxページでページのどこかに追加します。

<%=Session("yourscript")%>

ページ全体が更新されるわけではないため、Ajaxを使用している場合は、どこに配置するかを覚えておいてください。その場合は、アップデートフレーム内に配置してください。

これで、シーケンスは次のようになります。-クリック-> yourfunction()-> C#コード-> yoursecondscript

お役に立てれば....

于 2012-06-28T14:49:05.940 に答える