- PR -

[ASP.NET] HTMLButtonコントロール

1
投稿者投稿内容
惑星
会議室デビュー日: 2004/03/08
投稿数: 9
投稿日時: 2004-03-08 06:11
ASP.NETでHTMLButtonコントロール、HTMLでは<button>ですが、これがビジュアルデザイナのツールボックスには見あたりません。また追加しようとしても見つかりませんでしたが、これはどうしようもないのでしょうか。フラグメントとしてツールボックスに追加するしかない、ということでしょうか。せめてフラグメントのアイコンが変えられたらよいのですが…。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-08 10:05
引用:

惑星さんの書き込み (2004-03-08 06:11) より:

ASP.NETでHTMLButtonコントロール、HTMLでは<button>ですが、これがビジュアルデザイナのツールボックスには見あたりません。


 <input type="button">のことでしょうか?ツールボックスの「HTML」タブの中に、「button」というものがありますけど?これではなく?

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-03-08 10:06 ]
惑星
会議室デビュー日: 2004/03/08
投稿数: 9
投稿日時: 2004-03-09 00:44
紛らわしいですが、そちらはHtmlInputButtonコントロールです。
HTMLでは
<INPUT type="button" runat="server">
です。

HTMLButtonコントロールは、HTMLにおいて
<button type="button" runat="server">
という、buttonタグです。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-03-09 10:08
NAL-6295です。


HtmlButton コントロール


の事ですかね。

とりあえずタグ打ちするのが良いかと。
惑星
会議室デビュー日: 2004/03/08
投稿数: 9
投稿日時: 2004-03-09 12:52
引用:

NAL-6295さんの書き込み (2004-03-09 10:08) より:
NAL-6295です。


HtmlButton コントロール


の事ですかね。

とりあえずタグ打ちするのが良いかと。



最初の投稿に書きましたように、HTMLはフラグメントとしてツールボックスに追加できるため、最初からツールボックスに入っているHTMLとほぼ同様のことが出来ます。これは直打ちのショートカットとも言えます。

ただアイコンが変えられないんですよね。そこで最初に書いたように、フラグメントのアイコンが変えられたらよいな、と思ったのですが。
三猫 園
会議室デビュー日: 2004/03/09
投稿数: 1
投稿日時: 2004-03-09 20:00
はじめまして。本掲示板で初めて発言致します。
よろしくお願いします。

質問の回答ではなく、書こうか書くまいか迷ったのですが、
Button要素つながりということで、
サーバーコントロール化した Button要素 を使う際の
ちょっとした問題について書き込みさせていただきます。

--------------------------------------------------
クライアントがIEで、
サーバコントロール化したButton要素にType属性に「Submit」を
セット(し、Name属性を設定し)た場合、
Button要素のボタンコントロールで、Type="Submit"でポストバックを発生させた時に、
同じページにあるWebConrol.Buttonコントロールのポストバック同定が混乱します。
原因はIEの特殊な仕様と、ASP.NETが
HTML要素からコントロールを特定し、イベントを発生させる仕組みにあります。

* * *

ご存知の方も多いと思いますが、
IEでは、<input type="submit">と<button type="submit">では挙動が変わります。

[INPUT]
Forms に 押されたボタンのname属性値のみが含まれる

[BUTTON]
Forms に フォーム中の全てのボタンのname属性値が含まれる。
(押した、押さないに関わらない)


一方、ASP.NETページフレームワークはFormコレクション中の要素の「名前」と、 IPostBackEventHandler継承コントロールのUniqueNameとマッチングさせ、
一致したコントロールのRaisePostBackEventメソッドをコールしています。
(多分)
その為、Type=Submit で HTMLコントロール化した
Button要素をポストバックした場合、「名前がある=押した」と
されてしまうため上記のような不具合を発生させます。


以上の理由からBUTTON要素にレンダリングされるWebコントロール
(オリジナルのサーバコントロールを含む)を作成する場合、

・JScriptによるポストバック機構を利用する
(Page.GetPostBackEventReferenceの作るスクリプトをonClickにセット)
・Name属性は書き出さない
とするのが無難です。

--------------------------------------------------
以上は、VisualStucdio.NETにButton要素のサーバコントロール化を
任せてしまえばちゃんと回避してくれます。
(onClick属性値に「__doPostBack()」を書き出すはずです)

ただし、type=submitが使えないため、<Input Type="submit">のボタンに比べ、

・JavaScript OFFの環境で Button要素でポストバックを発生させられない。
・フォームのデフォルトボタンになれない
(Textフィールド等でエンターを押したときに自動的にクリックイベントが発生するボタン)

などの制約が生まれます。

また、onClickにクライアントサイドスクリプトをセットするのが
事実上不可能になります。


――以上、蛇足でした。
1

スキルアップ/キャリアアップ(JOB@IT)