2012-01-30 53 views
2

私は従来のASP.NET Web Formを持っています。私たちは、次のように定義されたボタン持っていた:.aspx.csページでJavaScriptからASP.NET EventHandlerを呼び出す

<asp:Button ID="myButton" Runat="server" OnClick="myButton_Click" /> 

を、私は次のようしている:

protected void myButton_Click(object sender, EventArgs e) 
{ 
    // Do Stuff 
} 

しかし、今、誰かが空想のJavaScriptフレームワークを使用することを決定しました。基本的には、私はちょうど:

私は実際にここからサーバー上でオリジナルメソッドを実行しますか?私はこれが非常に奇妙な質問であることを知っています。私はコードを単純化し、私が達成しようとしているものを直接コミュニケートしようと試みました。誰かが私にこのことを教えてもらえますか?

ありがとうございました!

答えて

0

これを試してください:あなたは

__doPostBack('<%=myButton.ClientID%>','OnClick'); 

やビットエラーが発生しやすく、使用、より良い、より少ないに書くことができ

<input type="button" id="myButton" onclick="someJSFunction(); __doPostBack('myButton','OnClick');" /> 
7

ASP.Net ClientScriptManager

<%= Page.ClientScript.GetPostBackEventReference(myButton, String.Empty) %>; 

第二は、実際に書き込み__doSubmitをカバーしていますが、ASP.Netフレームワークを入手しています。また、最初のページはページをポストバックしますが、2番目のページは正しいサーバーサイドのイベントをトリガーします。これは、ASP.Netアーキテクチャーに多くの機能を統合します。どちらもうまくいくでしょう。

この最近SO question

は、私ができるよりも、それははるかに良いすべてを説明する(というか一度やった)あなたのボタンはであってはならない、その関数を実行するために、実際のコードを実行されているものすべての

-1

まず、ボタンの背後にあるコード。ボタンの後ろにあるコードでと呼ばれる方法でにする必要があります。ボタンのイベントハンドラは、ボタン以外のオブジェクトによって直接使用されるべきではありません。だからあなたのボタンハンドラは次のようになります。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    CallMyRealMethod(); 
} 

次に、SignalRをチェックしてください。 (http://signalr.net)SignalR(簡単に言えば)では、C#のjavascriptメソッドとC#のjavascriptメソッドを呼び出すことができます。

この2つの手法を使用すると、コードを読みやすく保守しやすくすることができます。

+0

誰でも私の答えを下落させますか?理由を説明するコメントを残してください。 –

+0

downvoterではなく、最初に、あなたは実際の質問に答えることはできません。次に、signalrは完全に無関係です。あなたの下の答えを見てください。 –

関連する問題