ASP.NET がタグを使用して複数のフォームを作成することを許可していないという背後にある哲学は何runat=server
ですか...
1 に答える
Web フォームは、良くも悪くも、基礎となるプラットフォームを抽象化することを意図した概念に基づいて構築されています。サーバー コントロール、サーバー イベント、ViewState、および UpdatePanels は、このアプローチの例です。
複数のフォームは不可能ではありませんが、自分のページにサーバー コントロールを追加し、それらを "そのまま動作" させたい初心者の開発者にとっては直感的ではありません。経験豊富な開発者にとっては良いことですが、新しい一連の注意事項が発生します (Web フォームには多くのニュアンスと注意事項があります)。
たとえば、GridView
フォーム A にa を追加し、DropDownList
フォーム B に a を追加したとします。ドロップダウンはポストバックをトリガーしますが、フォーム B のデータのみがサーバーに投稿されます (これがフォームの仕組みです。一度に 1 つだけが投稿されます)。 )。
ただし、現在、GridView には、フォーム A に含まれていたすべての ViewState がありません。ページは完全に壊れています。
アドホックな ViewState 値はさらに扱いにくいものです。開発者は、必要なものを名前と値のペアとして ViewState に入れることができます。サーバーは、ViewState を取得するフォームをどのように決定する必要がありますか? それがすべてのフォームに入ると、それはページの肥大化です。
概要
- 技術的に不可能というわけではありませんが、問題がメリットを上回る可能性があります。
<form>
ASPX ページに1 秒を追加する方法があります (ただし、サーバーで実行されない場合があります)。- ページ上に複数のフォームが存在することはまったく問題ありません。これは、ASP.Net MVC が試みているように、プラットフォームと戦う/抽象化するのではなく、プラットフォームを操作することの多くの利点の 1 つです。