runat(button)

ASP.NETのページのHTMLでよく見かけるrunat="server"という属性。
これは、ASP.NET特有のものであり、サーバーコントロールであることを示している。

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

まず、runat.aspxを、

<%@ Page Language="C#" CodeFile="runat.aspx.cs" Inherits="runat" %>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title id="title_index">runat</title>
    <script>
      function button1_click(){
        alert("clicked!");
      }
    </script>
  </head>
  <body>
    <button id="button1" onclick="button1_click();">button1</button>
  </body>
</html>

とし、runat.aspx.csを、

public partial class runat : System.Web.UI.Page
{

}

こうする。
runatはPageを継承していること以外は何もしていない。

起動すると、こういうbutton1だけ。
起動すると、こういうbutton1だけ。

起動すると、こういうbutton1だけ。
button1を押すと、

これが出てくるけど、これはJavaScript側の処理。
これが出てくるけど、これはJavaScript側の処理。

これが出てくるけど、これはJavaScript側の処理。
次に、runat.aspx.csを、

こうする。
button1のテキストを変えようとするもの。
しかし、

button1はサーバ側ではわからない。
button1はサーバ側ではわからない。

button1はサーバ側のrunatではわからない。
そこで、

buttonタグにrunat="server"を付ける。

button1のテキストが変わっている
button1のテキストが変わっている

Load時にbutton1のテキストが変わっている。

出力されたHTMLのソースを見ると、runat=&quot;server&quot;はない。
出力されたHTMLのソースを見ると、runat="server"はない。

出力されたHTMLのソースを見ると、runat="server"はない。
標準のHTMLではなく、ASP.NETが書き換える場所の目安でしかないため。

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