- - PR -
ASP.NET CustomValidator と XMLウェブサービス(非同期)の組み合わせ
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-05-19 22:16
そこで止まると、ちょっとなぁ。。。 入力したときにエラーにならなかった。顧客は当然、「登録できるものだ」と思います。しかし、登録しようとしたらエラーになった。「どうして?さっきエラーにならなかったじゃない!!」と思わないでしょうか。 だったら、エラーが出るタイミングは1カ所でいいのではないでしょうか。 副次的に、プログラムはシンプルになりますし、エラーを作り込む機会も減ります。テストも少なくなります。 | ||||||||
|
投稿日時: 2008-05-20 09:39
書き込みありがとうございます。
Jittaさんの書き込み(2008-05-19 22:16)より引用: ------------------------------------------------------------------------------- 入力したときにエラーにならなかった。顧客は当然、「登録できるものだ」と思います。しかし、登録しようとしたらエラーになった。「どうして?さっきエラーにならなかったじゃない!!」と思わないでしょうか。 だったら、エラーが出るタイミングは1カ所でいいのではないでしょうか。 副次的に、プログラムはシンプルになりますし、エラーを作り込む機会も減ります。テストも少なくなります。 ------------------------------------------------------------------------------- 確かに上記の場合だと、利用者にとっては「え?なんで?」とかなってしまいますね。 ただ、利用者側の使い勝手の向上に重点を置くと利用者が項目を入力/選択した時点での検証は魅力的かな、と。 そこでちょっと工夫(というほどのものでもありませんが)を凝らして、登録処理実行前のチェックでエラーになった場合は表示するエラーメッセージを例えば、 「入力されたIDはお客様が入力中に他のお客様がご使用になられてしまいました。 申し訳ございませんが、他のIDをご入力お願いいたします。」 のように変えるなどすればある程度カバーできるのかな、と思いました。 ある程度割り切ってしまったほうがいいのか、とことん利用のしやすさを追求するのか、線引きが難しいところですね。 もちろん、納期が迫っていたりすればある程度割り切ったほうがいいのかもしれませんが(苦笑 ご意見、参考にさせていただきます。 ありがとうございました。 | ||||||||
|
投稿日時: 2008-05-20 10:49
よくある、希望IDとパスワードと氏名と住所と○○と○○と・・・を入力させてボタンクリックで
確認画面に遷移するやつですかね。yahooが似たタイプなので試してみました(yahooは確認画面ないんですね) 案の定、「登録可能なIDです」と出たにもかかわらず、登録時に「既に登録されています」とでました。 要は、(1)入力時に重複することと、(2)登録時にタイミングの問題で重複すること、の 頻度から仕様を決めればいいと思います。(1)が殆ど起こらないとか(2)がバンバン起こるなら (1)でのチェックは要らない気がしますし、(1)はしばしば起きても(2)はレアケースとかなら (1)でのチェックは便利だと思います。 「さっきエラーにならなかったじゃない」と思わせないようにする方法として チェックにひっかかった場合のみメッセージを表示し、引っかからなかった場合は チェックしたことを意識させない(何も表示しない)というのはアリな気もします。 個人的に、登録しようとしたとき(または確認画面に行こうとしたとき)「先にチェックしてください」 みたいにいわれるのは不便に思います。「だったら今の瞬間にチェックしてよ」って思います。 | ||||||||
|
投稿日時: 2008-05-20 12:06
問い合わせて重複がないことがわかったら、その時点でIDを予約しちゃえばいいのかな、と思いました。 これはこれでいろいろと手間がかかりそうですが。 | ||||||||
|
投稿日時: 2008-05-20 13:31
書き込みありがとうございます。
(2)はほぼレアケースと想定しています。 (1)のチェックについても本チェックというわけではなく、あくまで利用者が情報を入力する時点での入力補助程度と思っています。
他サイトへの移動やブラウザの閉じるボタンを制御することで対処できそうですが、やはり「手間」がかかりそうですね。 | ||||||||
|
投稿日時: 2008-05-21 05:53
データベースの排他制御に
・楽観的ロック ・悲観的ロック の2種類ありますが、これと同じような考え方でよいのでは。 システムの要求仕様が楽観的ロック、悲観的ロックのどちらを要求しているのか。 今回の場合は、楽観的ロックでよいような気がします。 つまり、IDを予約しないで登録時に重複のエラーが発生したときは ユーザーフレンドリーなメッセージを表示して再試行してもらう。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 |