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だけ。](https://cdn-ak.f.st-hatena.com/images/fotolife/B/BG1/20220228/20220228163522.png)
起動すると、こういうbutton1だけ。
button1を押すと、
![これが出てくるけど、これはJavaScript側の処理。](https://cdn-ak.f.st-hatena.com/images/fotolife/B/BG1/20220228/20220228163618.png)
これが出てくるけど、これはJavaScript側の処理。
次に、runat.aspx.csを、
こうする。
button1のテキストを変えようとするもの。
しかし、
![button1はサーバ側ではわからない。](https://cdn-ak.f.st-hatena.com/images/fotolife/B/BG1/20220228/20220228163912.png)
button1はサーバ側のrunatではわからない。
そこで、
buttonタグにrunat="server"を付ける。
![button1のテキストが変わっている](https://cdn-ak.f.st-hatena.com/images/fotolife/B/BG1/20220228/20220228164454.png)
Load時にbutton1のテキストが変わっている。
![出力されたHTMLのソースを見ると、runat="server"はない。](https://cdn-ak.f.st-hatena.com/images/fotolife/B/BG1/20220228/20220228164546.png)
出力されたHTMLのソースを見ると、runat="server"はない。
標準のHTMLではなく、ASP.NETが書き換える場所の目安でしかないため。
Sample/aspnet/runat/button/src/runat at master · bg1bgst333/Sample · GitHub