runat(script)

scriptタグにrunat="server"を付けることで、C#の分離コード(コードビハインド)を".aspx"側に持ってくることが出来る。

サーバー側オブジェクト タグ構文 | Microsoft Docs

runat.aspxで、

JavaScript側のscriptタグとは別に、C#側のrunat="server"付きscriptタグを用意し、そこにrunat.aspx.csにあったメソッドを持ってくる。
これでrunat.aspx.csは、

空の状態。

最初
最初

最初。
button1を押すと、

まずはJavaScript側のalertが出る
まずはJavaScript側のalertが出る

まずはJavaScript側のalertが出る。
そして、

C#側のサーバコントロールイベント処理によりbutton1のテキストが変わる
C#側のサーバコントロールイベント処理によりbutton1のテキストが変わる

C#側のサーバコントロールイベント処理によりbutton1のテキストが変わる。

Sample/aspnet/runat/script/src/runat at master · bg1bgst333/Sample · GitHub