- PR -

ASP.NET メッセージ表示後のPDF表示について

投稿者投稿内容
らすかる
会議室デビュー日: 2005/12/22
投稿数: 18
投稿日時: 2006-04-12 15:41
お世話になります。

OS:WindowsXP
言語:VS2005 ASP.NET(Web Application)

エラーの原因も対応策も見つけているのですが、解決する方法がどうしても見つかり
ません。以下の内容について、何か方法がございましたら教えて頂きたいと思います。
よろしくお願いします。


<現象>
 登録画面で、メッセージ表示後にPDFファイルを表示する画面を作成しています。
しかし、PDFを表示してブラウザ「戻る」ボタンを押すと、再度同じメッセージが
表示されてしまいます。

<画面>
 ・登録画面(aspx)
 ・PDF表示画面(aspx)

<処理内容>
1、登録画面(aspx)
 ・「登録」ボタンをクリックすると、「登録しました」のメッセージ表示。

 Page.ClientScript.RegisterStartupScript(Page.GetType(), "MSG", _
 "<script language=""javascript"">alert('登録しました');</script>")

 ・「PDF表示」ボタンをクリックすると、PDF表示画面(aspx)を表示

 Server.Transfer("PDF表示画面.aspx")

2、PDF表示画面(aspx)※ツールは一切配置していない画面

 ・Page_Laod時に、登録画面の情報を元にPDFファイルを作成し表示する。

  ※「PDF」に関しては、「Crystalreport」ではなく別のPDF作成ソフトを利用
   して作成/表示処理を行っています。

<原因>
 現在の「Page.ClientScript.RegisterStartupScript」でメッセージを表示すると
HTML内に情報が設定されている。その為、ブラウザ「戻る」でバックするとその
情報を読み取り、再度表示されている。

<対応策>
 1、PDFを別ウィンドウとして表示する。
 2、「Page.ClientScript.RegisterStartupScript」で設定しているメッセージを
   HTML内から削除する。

 ※以前調査したのですが、解決までには至らず保留していた。

以上
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-04-12 23:14
引用:

らすかるさんの書き込み (2006-04-12 15:41) より:

<対応策>
 1、PDFを別ウィンドウとして表示する。
 2、「Page.ClientScript.RegisterStartupScript」で設定しているメッセージを
   HTML内から削除する。


削除するのではなく、書き出さなければいいのでは?
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2006-04-13 07:55
キャッシュを無効にすると解決するのでは?

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE" >


_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
らすかる
会議室デビュー日: 2005/12/22
投稿数: 18
投稿日時: 2006-04-13 09:12
お世話になります。

Jittaさん、Accessさん、回答ありがとうございます。

<Jittaさんの返答>
>削除するのではなく、書き出さなければいいのでは?

「書き出さない方法」という方法は、どのように行えばよろしいでしょうか?
メッセージ表示に関しては、全て「Page.ClientScript.RegisterStartupScript」を
使用しているので、他の方法が分からない状態です。
参考になる情報(サイト等)がありましたら、教えて頂けないでしょうか?

<Accessさんの返答>
>キャッシュを無効にすると解決するのでは?
><META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE" >

この件に関して、実際に試してみたいと思います。

以上
らすかる
会議室デビュー日: 2005/12/22
投稿数: 18
投稿日時: 2006-04-13 17:56
お世話になります。

><Accessさんの返答>
>キャッシュを無効にすると解決するのでは?
><META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE" >

Accessさんの返答を元に修正して、メッセージは表示されなくなりました。
しかし今回の対応あり/なしに関わらず、別の問題を見つけてしまいました。

<現象>
「登録」ボタンをクリックして、登録処理終了後にボタン名を「更新」に変更して
いるのですが、PDF表示して戻ると名称が「登録」ボタンに戻っている。

現在、頂いた回答を元に再度調査/修正を行っています。でも、うまく動作しません。
「ASP.NETでのメッセージ表示」及び「PDFを別画面で表示する方法」について、
参考となる情報がありましたら再度お願い致します。

以上
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-04-13 18:52
引用:

らすかるさんの書き込み (2006-04-13 17:56) より:
<現象>
「登録」ボタンをクリックして、登録処理終了後にボタン名を「更新」に変更して
いるのですが、PDF表示して戻ると名称が「登録」ボタンに戻っている。



PDFを別ウインドウで表示する。
って言うのはだめですかね・・・
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-04-13 21:52
 済みません、問題を読み間違っていました。
引用:

らすかるさんの書き込み(2006-04-12 15:41)より:

<現象>
 登録画面で、メッセージ表示後にPDFファイルを表示する画面を作成しています。
しかし、PDFを表示してブラウザ「戻る」ボタンを押すと、再度同じメッセージが
表示されてしまいます。


 「戻る」で戻るから、そうなるんです。もうひとつ戻ると、同じ内容が2つ登録される、、、とか、なりませんか?

 PDF がブラウザを占領してしまうから、ということかな?
 だったら、Transfer でなく、Redirect を使ってみましょう。

 可能なら、ボタンクリックで別のウインドウを開き、そちらで表示させましょう。

〆 written by Jitta@わんくま同盟 on 2006/04/13
□ Microsoft MVP for Visual Developer ASP/ASP.NET October, 2005 - September, 2006
らすかる
会議室デビュー日: 2005/12/22
投稿数: 18
投稿日時: 2006-04-14 09:28
お世話になります。

かるあさん、jittaさん、回答ありがとうございます。

以前「PDFを別ウィンドウで表示」を試してみましたが、PDFは表示されず
真っ白な画面表示になってしまいます。

<処理内容>
1、「window.open」でPDF表示画面を表示していました。
2、PDF表示画面(Page_Load)で、PDFファイル作成/表示処理を実行。

PDF作成後に、以下の処理を行っています。
おそらく、ここに問題があると思いプログラムを修正したのですが、PDFが表示さ
れることはなくその時は断念しました。

Response.ContentType = "application/pdf"
Response.AppendHeader("content-length", UBound(pdfData) - LBound(pdfData) + 1)
Response.AppendHeader("content-disposition", "inline; filename=Sample.PDF")
Response.BinaryWrite(pdfData)
Response.End()

上記の設定で、「PDFを別ウィンドウで表示」する場合問題はないのでしょうか?
また「PDFを別ウィンドウで表示」について、参考となる情報がございましたら
教えて頂けないでしょうか?
よろしくお願いします。

<jittaさんの返答>
> 「戻る」で戻るから、そうなるんです。もうひとつ戻ると、同じ内容が2つ登録
>される、、、とか、なりませんか?
>
> PDF がブラウザを占領してしまうから、ということかな?
> だったら、Transfer でなく、Redirect を使ってみましょう。

 調査しましたが、同じ内容が2つ登録されるということはありませんでした。また、
「Transfer」ではなく「Redirect」でもテストしましたが現象は変わりませんでした。

以上

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