- PR -

ASP.Net Button.Attributes に関して

投稿者投稿内容
こまちう
会議室デビュー日: 2004/12/14
投稿数: 5
投稿日時: 2005-02-16 16:52
はじめまして。こまちうといいます。

WebApplicationでWindowsApplicationでいうMessageBoxのYesNoBoxと
同じ事を行いたいと思っています。

Page_Loadに

Button1.Attributes("OnClick") = "return confirm('テストを実行しますか');"

を記述する事で上手く行きました。

しかし対象のボタンが
WebFormの場合は上手くいくのですが、HTMLオブジェクトをサーバーコントロール
に変換したボタンの場合に確認ダイアログは出力されるのですがOKを押しても
Botton1_ServerClick()に入りません。

見た目での違いはWebフォームボタンの場合は
Button1_Click()
に対してHTMLをサーバコントロールに変換したものは
Button1_ServerClick()となっています。

何か記述が必要なのでしょうか?
分かる方がいらっしゃいましたら教えて下さい。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-02-16 17:02
引用:

こまちうさんの書き込み (2005-02-16 16:52) より:
見た目での違いはWebフォームボタンの場合は
Button1_Click()
に対してHTMLをサーバコントロールに変換したものは
Button1_ServerClick()となっています。



これはサーバ側のコードの違いですよね?
動かして表示されたaspxのHTMLコードを「ソースの表示」で見てみると謎が解けます。
こまちう
会議室デビュー日: 2004/12/14
投稿数: 5
投稿日時: 2005-02-16 17:14
ぼのぼのさん早速の返答ありがとうございます。

たしかにHTMLのソースは違いました。
HTMLをサーバコントロールに変換したものには勝手に
__doPostBack('Button1','') というものが入ってました。

初心者の質問で申し訳ございませんが、WebAppliに詳しい人間
が周りに居ないため対処方法がわかりません。

実際にどのようにコードを改良すればWebフォームのボタン、
サーバコントロールのボタンが同じ動きをするのでしょうか?

ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-02-16 17:34
私が今作ってるWebアプリは対象がIEのみの社内向けのものなので、IE以外のブラウザでの動作を保証しないような回答しかできないですよ?(^^;

引用:

こまちうさんの書き込み (2005-02-16 17:14) より:
初心者の質問で申し訳ございませんが、WebAppliに詳しい人間
が周りに居ないため対処方法がわかりません。


そういう状況ならこまちうさんが勉強してWebAppliに詳しい人間になるしかないですね…
上に書いた範囲内で良ければサンプルは提示できますが、その前に確認したいことがあります。
「サーバコントロールのボタンは使わない」という方法ではだめですか?
両方使いたい理由があるなら教えてください。
こまちう
会議室デビュー日: 2004/12/14
投稿数: 5
投稿日時: 2005-02-16 17:48
ぼのぼのさん返答ありがとうございます。
私が作成しているものも同じIEのみの社内向けです。

本件に遭遇した順序を説明しますと、

稼動中のWebサービスがあるが要望でYesNoボックスでSubmit前に確認を取りたい
  ↓
テスト環境でYesNoボックスの処理が成功
  ↓
本番プログラムで処理が失敗
  ↓
原因を調べたら、テスト環境はWebフォームボタン、本番環境はHTMLサーバコントロール

という流れでした。

本番環境がサーバコントロールの理由はWebフォームだと問題があり、サーバコントロールにした記憶がございます。

私としましては、なるべく本番の環境を変更(サーバコントロールからWebフォームのボタンに移行する)したく無いのが本音です。

以上、よろしくお願い致します。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-02-16 20:57
 [input type=button]となっているのを[input type=submit]に変更する。
# [は<に、]は>に変更してね。
# HTMLも勉強しておいてください。

_________________
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-02-16 23:06
引用:

こまちうさんの書き込み (2005-02-16 17:48) より:
稼動中のWebサービスがあるが要望でYesNoボックスでSubmit前に確認を取りたい
  ↓
テスト環境でYesNoボックスの処理が成功
  ↓
本番プログラムで処理が失敗
  ↓
原因を調べたら、テスト環境はWebフォームボタン、本番環境はHTMLサーバコントロール

という流れでした。


まず、これがそもそも問題です。テスト環境で本番プログラムを流用せずに新規に作り直した、ということですか?それではテストの意味がないではないですか。

引用:

本番環境がサーバコントロールの理由はWebフォームだと問題があり、サーバコントロールにした記憶がございます。

私としましては、なるべく本番の環境を変更(サーバコントロールからWebフォームのボタンに移行する)したく無いのが本音です。


チームとしての方針なら仕方ないですけど、個人の考えだけでこれを決めるのは軽率です。Webフォームの方が結果的に正解かもしれませんよ?

Webフォームだと問題があり、のとこで具体的に何が問題だったのか、を書いてください。WebフォームのボタンがHTMLのbuttonではなくsubmitになるのはご存知でした?もしそれが問題の原因ならJittaさんご提示の方法では解決しませんよ。
#サンプルを出し惜しみしてるわけではありません、念のため…
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-02-17 00:05
引用:

Button1.Attributes("OnClick") = "return confirm('テストを実行しますか');"


だと、trueでもfalseでもリターンしてしまうので・・・
引用:

Button1.Attributes("OnClick") = "if(!confirm('テストを実行しますか')) return false;"


falseの時だけリターンするようにする。

#つか、俺はそうしてる。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2005-02-17 00:06 ]

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