• ベストアンサー

【ASP.NET】 Buttonコントロールについて

お世話になります。ASP.NETのButtonコントロールに関する質問です。 Visual Studio 2008でASP.NETの開発を行っているのですが、 左のツールボックスにButtonコントロールが2つ存在します。 1. 標準コントロールのButtonコントロール 2. HTMLコントロールのButtonコントロール 上記いずれも最終的にHTMLの<Button>タグにレンダリングされる と思うのですが、何が違うのでしょうか? 使い分け方について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#259269
noname#259269
回答No.2

>上記いずれも最終的にHTMLの<Button>タグにレンダリングされる いいえ。出力される HTML を確認してみてください。 どちらも input タグです。で、前者は submit タイプに、後者は button タイプにレンダリングされます。つまり submit タイプと button タイプの違いは何か、というご質問に変換できます。 フォームの中に Submit ボタンがあると、[Enter]キー押下でサブミットが行われます。 この Submit ボタンを HTMLコントロールに変更して、 runat="server" 属性と onserverclick 属性を追加したボタンに変えると、状況が変わります(ボタンをクリックしないと PostBack しません)。 Submit ボタンが二つある場合、より先頭に配置したボタンがデフォルトのサブミットボタンになるようです。 フォームの入力中についミスして、Enter を押してしまうと、PostBack が走ってしまう、このようなお節介が嫌なので、私は常に HTMLコントロールの方を使用するようにしています。 世間一般的には、Submit ボタンが普通に使われていますけど。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • tochansa
  • ベストアンサー率76% (23/30)
回答No.1

うーん、私の理解ではこんな感じです。 1. 標準コントロールのButtonコントロール ・自動的にrunat="server"が設定されるのでサーバー側のボタンクリックイベントやらなんやら、ボタン関連のイベントが作成しやすいです。 ・PageLoad等のイベント内でプロパティの設定を行えます。便利。  (button1.text="hoge"等) 2. HTMLコントロールのButtonコントロール ・上記恩恵に与れない。 あえて言うなら使い分けはこんな感じかなぁ。。。 処理のために必要な挙動がjavascript(クライアント側)のみで済む場合。→HTMLコントロールのButtonコントロール 処理のために必要な挙動がserverのclickイベント(サーバー側)で済む場合→標準コントロールのButtonコントロール クライアント・サーバー両方で処理が欲しいとき→標準コントロールのButtonコントロール

すると、全ての回答が全文表示されます。

関連するQ&A