当たり前の動作なんだが、これは再確認のためのMEMO。

 Test.ASPXを作成して、コントロールをおく。このコントロールで、
クライアントスクリプトHoge()が実行される必要があるとする。

 <ASP:Button ID="button1" runat="server"
 onClientClick="JavaScript:Hoge();" />

 このTest.ASPXにて表示されるHTMLは、

・UseSubmitBehavior=Trueの時
 <input type="submit" id="button1" onclick="JavaScript:Hoge()">

・UseSubmitBehavior=falseの時

<script type="text/javascript">
<!--
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

<input type="button" id="button1" onclick="JavaScript:Hoge();__doPostBack('button1,'')">

こうなる。
 さて、Function Hoge()で、別ウィンドウ(target = _blank)にPOSTしようなんて処理を記述したい場合は、注意せよ。

Hoge()でSubmitされる処理と、Submitボタンでの処理があるため、結果二つのウィンドウが起動してしまう。

 いや、実は、やりたいことの実現をサーバコントロールを利用している時点で、ほぼ間違い。
 自前で別ウィンドウにPOSTするなら、サーバコントロールを利用せず、<input type="button">か
<Button>を利用すること。
 で、クライアントスクリプト側でPOSTしよう。

もしくは、Window.Openで空ウィンドウを開いてから、そこにPOSTしましょう。これならサーバコントロールでもOKです。