1. ホーム
  2. asp.net

[解決済み】なぜASP.NET webformsはRunat="Server "属性が必要なのでしょうか?

2022-04-13 15:28:16

質問

なぜ runat="server" は必須属性であり、かつ server は、私の限られたASP.NETの知識では唯一の選択肢であり、これを使用しないとエラーが発生するのでしょうか?

HTMLタグにオプションで使用できることは理解していますし、クライアント/サーバーのパラダイムと、それが実際に何を指定しているのかは理解しています。

ASP.NETのコントロールであることが暗示されるだけの冗長なタグなのか、それとも何か根本的な理由があるのでしょうか?

解決方法は?

ASP.NETタグとHTMLタグを混在させることができることを理解するためのもので、HTMLタグには runat="server" を使用するかしないかです。 タグを入れたままでも何も困らないし、取り出すとコンパイラーエラーになる。 Web言語について、いろいろと暗示をかけると、プログラマー志望の人が入ってきて勉強しづらくなります。 タグの属性について冗長であるべき理由は、これと同じくらいあります。

この会話は、Mike Schinkel の ブログ Microsoft National ServicesのTalbot Crowell氏との間で交わされたものです。 その内容は以下の通りです(出典の文法に誤りがあるため、最初の段落はパラフレーズしています)。

<ブロッククオート

[...] が、その重要性は <runat="server"> は、一貫性と拡張性を重視しています。

もし開発者がいくつかのタグをマークしなければならない場合(例えば <asp: /> をASP.NET Engineが無視できるようにすると、タグや将来の拡張機能の間で名前空間の衝突が発生する可能性もあります。このため <runat="server"> 属性を使用することで、この問題は解決されます。

さらに続きます。

もし <runat=client> がすべてのクライアントサイドタグに必要な場合、パーサーはすべてのタグをパースして <runat=client> の部分があります。

彼は続けます。

現状では。 私の推測が正しければ、パーサーは すべてのテキストを無視します(タグがあってもなくても タグでない限り runat=server 属性、または" <% " プレフィックスまたはssi " <!– #include ... (...) また、ASP.NETは設計上では ウェブデザイナーの分離を可能にする (foo.aspx)とウェブ開発者 (foo.aspx.vb)であるため、ウェブデザイナーは 独自のウェブデザイナーツールを使って HTMLとクライアントサイドJavaScriptを配置する ASP.NETのことを知らなくても 特有のタグや属性があります。