2017-02-10 7 views
-1

私はボタンを持っています。私はボタンを押す。新しいウィンドウが開きます。うん。しかし、バックグラウンドでは、ボタンのあるページがリロードされています。どのようにして、ウィンドウを開くだけでメインページをリロードしないのですか?ASP C#ポストバックが私を殺しています

protected void btnLookup_Click(object sender, EventArgs e) 
{ 
    // open a pop up window at the center of the page. 
    ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", "var Mleft = (screen.width/2)-(760/2);var Mtop = (screen.height/2)-(700/2);window.open('your_page.aspx', null, 'height=700,width=760,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\'');", true); 
} 
+4

サーバー側のコードではなく、JavaScriptからウィンドウを開きますか?それをサーバーボタンにしないでください。サーバーに送信する必要はありません。 – David

+1

jsでfalseを返しますか? – rach

+2

これは、神々が優しく私たちに、より健康的なMVCを与えた理由です。懸念される分野ははるかに明確です。 – itsme86

答えて

1

ボタンタイプ=ボタンは、ページを送信しないようにします。また、jqueryをクリックしてウィンドウを開くこともできます。 jqueryでe.preventDefault()を実行すると、デフォルトのアクション(ページの送信)が行われないようにすることができます。あなたはこのような何か書くとき

3

<ASP:Button runat="server"> 

を...あなたはHTMLを書いていません。特定の機能を持つサーバー側のコントロールを定義するXMLを記述しています。いつでも好きなときに

「正常な」HTMLマークアップは、ちょうどASP接頭辞なしとrunat=serverせずにそれを書く:

<button>My Button</button> 

をあなたが提出していないにあるボタンをしたい場合は、あなたが(set the button typeへのデフォルトを必要とします一部のブラウザでは「サブミット」)。だから今、私たちは、この持っている:

<button type="button">My Button</button> 

をそして、あなたはスクリプトを添付したい場合は、あなただけのマークアップに追加することができます。

<button type="button" onclick="var Mleft = (screen.width/2)-(760/2);var Mtop = (screen.height/2)-(700/2);window.open('your_page.aspx', null, 'height=700,width=760,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\'');">My Button</button> 

スクリプトを分離するためにクリーンであるかもしれない:

<button type="button" onclick="OpenSomeWindow()">My button</button> 

次に、RegisterClientScriptを使用してOpenSomeWindowを定義するか、ページに含まれる外部の.jsファイルに配置します。

関連する問題