- PR -

[ASP.NET/C#]JavaScriptからのポストバックについて

投稿者投稿内容
夏姫☆
会議室デビュー日: 2003/12/11
投稿数: 15
投稿日時: 2004-01-23 13:55
こんにちは。いつも勉強させて戴いております。
この会議室をはじめいろいろ調べましたが、どうしても
行き詰まってしまい、皆様のお知恵をお貸し戴けたらと思い
投稿させて戴きます。

現在、VC#にてASP.NET開発中なのですが、Button押下で
ポストバックする前に、JavaScriptで入力データのチェックを
行ないたいと思っています。

具体的には、フォーム上にTextBox1、Dropdownlist1、Button1、
Label1があり、Button1押下でデータチェックを行ない、データが
正常な場合はポストバックし、異常な場合はLabel1にメッセージを
表示するというものです。
データチェックは、Dropdownlist1の選択値が99の時はTextBox1は
未入力で良いが、それ以外の選択値の時には入力されていなければ
ならないというチェックです。

現状は、Button1押下でポストバックし、サーバ・サイドでチェックを
しているのですが、クライアント・サイドでチェックできてしまう
チェック内容であるだけに、できればクライアント・サイドでチェック
してから、ポストバック出来ないかと思っています。

この会議室の投稿を検索したところJavaScriptからのポストバックは
隠しボタン等を使ってやれば出来るとの事でしたが、もっと簡単に
出来ないものでしょうか。

皆様は入力データのチェックはどのように行なわれているのでしょうか。
クライアント・サイドで〜と考えるのはJSP&Servlet的な考え方なの
でしょうか。
お知恵をお借りしたく、宜しくお願い致します。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-01-23 14:29
サーバサイドで
Button1.Attributes.add("onClick","任意のJavaScript")
と記入すれば可能です。

任意のJavaScriptの内容は例をあげるとしたら

if(!チェックしたい内容) return false;

です。
falseの時だけreturnして、true のときはreturnしないという
事です。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-23 14:39
入力検証のためのvalidatorコントロール・・・使いましょう
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-01-23 14:49
ども、ほむらです。
----
夏姫☆氏へ
引用:

現状は、Button1押下でポストバックし、サーバ・サイドでチェックを
しているのですが、クライアント・サイドでチェックできてしまう
チェック内容であるだけに、できればクライアント・サイドでチェック
してから、ポストバック出来ないかと思っています。

この会議室の投稿を検索したところJavaScriptからのポストバックは
隠しボタン等を使ってやれば出来るとの事でしたが、もっと簡単に
出来ないものでしょうか。

皆様は入力データのチェックはどのように行なわれているのでしょうか。


.NETではありませんが。
僕はクライアントサイドは入力制限程度の簡単なものにとどめておいて
データの内容チェックはサーバーサイドで行っています。

理由は、
ブラウザがなくてもHTTPリクエストは送れるからです。
(=クライアントサイドでの入力は当てにならない)
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-01-23 14:56
引用:

Jittaさんの書き込み (2004-01-23 14:39) より:
入力検証のためのvalidatorコントロール・・・使いましょう



引用:

具体的には、フォーム上にTextBox1、Dropdownlist1、Button1、
Label1があり、Button1押下でデータチェックを行ない、データが
正常な場合はポストバックし、異常な場合はLabel1にメッセージを
表示するというものです。
データチェックは、Dropdownlist1の選択値が99の時はTextBox1は
未入力で良いが、それ以外の選択値の時には入力されていなければ
ならないというチェックです。



この要件ってValidatorで可能なのでしょうか。
可能ならば、その方がいいかもしれませんね。
(というか、逆にその場合の実装方法を教えて貰えたらうれしいなぁなんて・・・ 汗)
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-23 15:09
Label1・・・これをcustomvalidatorとする
対象コントロールは・・・何でもいいや。結局、イベント引数としてvalueが設定されると言うことだから。

直打ちのため、ミスごめん

if (dropdownlist1.vaule == 99) {
 // dropdownlistの値が99のときは何でもいい
 e.IsValid = true;
} else if (textbox1.value.length == 0) {
 // dropdownlistの値が99以外で、テキストボックスがヌルだとエラー
 e.IsValid = false;
}

と、検証ファンクションで直接オブジェクトの値を調べればよいのでは?


if文1つでいいか?
if (dropdownlist1.vaule != 99 && textbox1.value.length == 0) {
 e.IsValid = false;
} else {
 e.IsValid = true;
}

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-01-23 15:20 ]
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-01-23 15:25
おお。おっしゃるとおりです。

最近、サーバサイドでクライアントスクリプト生成していたので、CustomValidatorの存在を失念してました・・・。

ありがとうございます。
夏姫☆
会議室デビュー日: 2003/12/11
投稿数: 15
投稿日時: 2004-01-23 15:54
NAL-6295さん、Jittaさん、ほむらさんご回答ありがとうございます。

JavaScriptで〜と考えていましたが、せっかくASP.NETで開発しますので、
Jittaさんにお教えいただいたCustomValidatorを用いた方法でチャレンジしてみます。
昨年12月から.NET開発に着手したばかりで、なかなかスムーズにコーディング
できないのが悩みの種ですが、無事に解決しましたら、改めてご報告いたします。


NAL-6295さん
 Button1.Attributes.add("onClick","任意のJavaScript")の記述をみて
 眼から鱗状態でした。
 Button1.Attributes.addという方法があるのは知っていましたが、
 JavaScriptからのポストバック〜と難しく考えてしまい、すっかり
 見えなくなっていました。

Jittaさん
 コーディング例ありがとうございます。
 調べていたMSのページValidatorが記載されていたのですが、理解できていませんでした。
 MSの解説は難解だと思えて仕方がありません。

ほむらさん
 確かにおっしゃるとおりですね。
 JSP&Servletの習慣!?で、つい、データチェックはクライアント・サイドでと
 思ってしまいました。
 今回はサーバへのアクセスを必要時のみとしたいので、クライアント・サイドでの
 チェックを採用しますが、サーバ・サイドでのチェックも選択肢のひとつに
 考えたいと思います。

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