- - PR -
サーバーサイドの途中でクライアントにメッセージ出力
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-06-17 12:13
こんにちわ。
現在、VS2008でC#のWebフォーム開発を行っています。 .NETの基本スタイルとしてラウントトリップがありますが、 以下のような処理はできるのでしょうか?ご教示下さい。 @.ボタン押下 A.サーバーサイドでデータ検索 B.例えばAの検索で他の人がデータを使用中だったのでユーザーに通知(処理終了) C.Aの検索でデータが未使用なら後続の処理を実施(更新処理など) ここで困っているのは、Bのユーザーに通知する方法が 画面内に表示するエラーメッセージならば、ポストバック後の画面に表示することを イメージできるのですが、ポップアップメッセージを出力したいのです。 今は苦し紛れにポストバックした後の最後でjavascriptをサーバーサイドの プログラムに無理やり埋め込んで出力しています。 もっとスマートな処理の仕方が無いかをどなたか是非ご教授下さい。 | ||||
|
投稿日時: 2008-06-18 07:10
私もそのように行いました。
ところで、あなたが考える「スマートな方法」とは、何が、どの様に、よりスッキリとまとまっているのでしょう? あるいは、現状のどの様な点を、ファットだと考えていらっしゃるのでしょう? 何をどう感じるかは人や場合によって異なります。あなたの感性を、他人に、説明してください。 | ||||
|
投稿日時: 2008-06-18 08:12
Ajaxを実装してScriptManagerの
PageRequestManager_endRequestイベントを利用したらどうでしょうか。 ポップアップに表示するメッセージはThrowステートメントで設定します。 こんな感じです。
_________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2008-06-18 11:19
回答ありがとう御座います、Accessさん。
--------------------------------------------------- //サーバー側で発生した例外の詳細メッセージを表示 alert(args.get_error().message); --------------------------------------------------- この部分のalert()はAjaxを実装しないとできないということですよね? 今回、Ajaxは実装しない方針なので残念ですがこの方法はできないということで。 ◆Jittaさん すみません、漠然と「スマートな方法」と記述してしまった理由は 自分が.NETプログラミングのスキルが低いので概念やメソッドなどの知識不足から 苦労していると思っておりまして。 表現が良くなかったです。 ありがとう御座いました。 | ||||
|
投稿日時: 2008-06-25 12:35
どうも、こんにちわ。
以前話題に上げさせてもらったメッセージ出力について再度ご教示下さい。 【開発環境】 VS2008、C#、Ajaxは未使用 【質問内容】 現在、ボタン押下でラウンドトリップする際にサーバーサイドで例えばデータ件数を カウントして、ZERO件だったらユーザーにポップアップメッセージで通知。 これを実施するのに、サーバーサイド処理の最後に「Response.Write」で Javascriptを埋め込み、HTMLのレンダリングの先頭にJavascriptが追記されて 出力する状態です。 この方法だとラウンドトリップしてクライアント側に帰ってきたとき、 HTMLのレンダリングの前にJavascriptが実行され、ポップアップは出るのですが 背景にあるブラウザー画面が処理途中の真っ白な状態で、ポップアップのOKボタンを 押さないとレンダリングされないままです。 画面表示がされた状態でメッセージを出力する方法があれば どなたかご教示下さい。 (ダミーの画面とかを挟まないと実現できないのでしょうか) 宜しくお願いします。 | ||||
|
投稿日時: 2008-06-25 12:38
問題はResponse.Writeなんて使ってるとこにあると思います。
ASP.NETでJavaScriptを利用する場合、専用の登録用クラスがあります。 | ||||
|
投稿日時: 2008-06-25 14:36
どっとねっとふぁんさんコメントありがとう御座いました!
勉強不足でした。 RegisterStartupScriptメソッドですね。 ありがとうございました。 Response.Writeの方法は力技過ぎますし、動作が保障できないですね。 | ||||
|
投稿日時: 2008-06-25 16:56
いや、動作が保証できないわけではなく、ASP.NETの仕組みから、Response.Writeを利用すると、aspxページのタグの出力の前にResponse.Writeで書き込んだ文字が出力されます。
そんなHTMLが正しいわけがないので、Response.Writeは使わないようにしましょう、ということです。 |