- PR -

メッセージの表示

投稿者投稿内容
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-03-19 15:06
こんにちは、まゆりんです。
私もPage.RegisterStartupScriptを使用していましたが、画面に何も表示されない状態で
アラートが表示されてしまう為やめました。

アラートで・・・とは言っても、ASPをやっていた頃のなごりですので
ざっと作ってみると美しくないです(何を今更)。
#直打ちなのでコピペ非推奨
コード:
▼aspx側
・・・
<head>
<script>
<!--
	function DispMsg(){
		<%= strMsg %>
	}
//-->
</script>
</head>
<body onload="DispMsg()">
・・・
▼aspx.vb側
・・・
If txtbox1.Text = "" Then
	strMsg = "alert=""●●に値を入れてください。"";"	
End If
・・・



#更に余談:
#地球が回っているのは、サーバ処理中にアラート表示を(強制的に)行っている為だと思います。
#つまり、サーバからクライアントへのレスポンスが完全に終了していない状態だからではないかと。
_________________
まゆりん @ わんくま同盟
Blog る。
きち
常連さん
会議室デビュー日: 2003/12/17
投稿数: 41
投稿日時: 2004-03-19 15:33
まゆりんさんの方法いいですね。
<%=〜%>というのは何度も使ったことありましたけど、そこでアラートを出力するのは考え付きませんでした。

引用:
私もPage.RegisterStartupScriptを使用していましたが、画面に何も表示されない状態で
アラートが表示されてしまう為やめました。


これはRegisterClientScriptBlockメソッドのほうを使用していたなんてことはないですかね。
RegisterClientScriptBlockメソッドの場合だと、Pageオブジェクトの<form runat= server>要素の開始タグ直後にクライアント側のスクリプトが出力されます。
Page.RegisterStartupScriptで起きていたのでしたら私もいつ起きるかどきどきですな。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-19 15:39
引用:

まゆりんさんの書き込み (2004-03-19 15:06) より:

#更に余談:
#地球が回っているのは、サーバ処理中にアラート表示を(強制的に)行っている為だと思います。
#つまり、サーバからクライアントへのレスポンスが完全に終了していない状態だからではないかと。



余談につっこんで申し訳ないですが。。。
 サーバからの「送信」は終わっています。クライアントが、受信しながら処理しているので、「受信」が途中で止まっています。「受信」がというか、「処理」が、ですけど。
 そうですね。IEを起動して、VS.NETの「デバッグ」ツールメニューから「プロセス」を選び、プロセスの一覧からIEを選びます。次のポップアップで「スクリプト」にチェックして、ポップアップをすべて閉じます。するとVS.NETは「実行中」になるので、二重縦線の「停止」?■で止めるのではなく、一旦停止します。そしてIEの画面でポストバックさせるなりすると、スクリプトがあるところで止まります。1行ずつ実行させると、順次行数が増えていきます(笑)




 それで、やってないのでわかりませんが、RegisterStartupScriptではなく、関数化してRegisterClientScriptBlockの方へ登録してはどうでしょう?RegisterStartupScriptには、「document.body.onload = 追加した関数();」などを登録しておくと、読み込みがすべて完了した時点で、alertが表示されると思います。

嗚呼、よく見ると、まゆりんさんのと、やってることは一緒じゃないか。。。

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-03-19 15:42 ]
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-03-19 15:52
引用:

きちさんの書き込み (2004-03-19 15:33) より:
これはRegisterClientScriptBlockメソッドのほうを使用していたなんてことはないですかね。


仰る通りでございます
RegisterStartupScriptでしたら問題ないですね。
ドキドキさせてしまってごめんなさい。。。
_________________
まゆりん @ わんくま同盟
Blog る。
ichiro
会議室デビュー日: 2004/03/15
投稿数: 12
投稿日時: 2004-03-19 21:23
これだと、メッセージ画面が表示されずに、999.aspx の画面に
遷移してしまいます。
メッセージ画面で、"OK"を押した後に次画面にするには、
どうすれば良いのでしょうか?

Me.Literal1.Text = _
"<script language='JavaScript'>window.alert('" & msg_cd1 & "');</script>"

Server.Transfer("../reference/999.aspx")

※登録ボタンとかで、"登録しました"を表示させて、次画面に遷移したい。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-19 22:15
引用:

ichiroさんの書き込み (2004-03-19 21:23) より:
これだと、メッセージ画面が表示されずに、999.aspx の画面に
遷移してしまいます。
メッセージ画面で、"OK"を押した後に次画面にするには、
どうすれば良いのでしょうか?

Me.Literal1.Text = _
"<script language='JavaScript'>window.alert('" & msg_cd1 & "');</script>"

Server.Transfer("../reference/999.aspx")

※登録ボタンとかで、"登録しました"を表示させて、次画面に遷移したい。



 ASP.NETが、どういう仕組みで動いているか、または、クライアントサイドとサーバサイドでどのようにプログラムが動くか。それからかなぁ?それを理解しておかないと、後々困りますよ。


 とりあえず、こんな感じかな?

RegisterClientScriptBlock("AlertAndTransfer", _
"<script language=javascript>" _
+ "function AlertAndTransfer() {" _
+ "alert('登録が完了しました\n次の画面へ移ります');" _
+ "window.location.href(URL);" _
+ "}" _
+ "</script>")
RegisterStartupScript("RegistOnLoad", _
"<script language=javascript>" _
+ "window.document.body.onload = AlertAndTransfer();" _
+ "</script>")

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