DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Server.Transferのエラーの対処

環境/言語:[NET Frameworkのバージョン 1.0]
分類:[.NET]

こんにちは、まさしです。
WEBアプリケーション、VB.NETです。

画面を呼ぶときにエラーが出たときに、メッセージを
表示させたいのですが、Catchにはどのように書けば
良いのでしょうか?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Server.Transfer("masterMente.aspx")
Catch
'ポップアップでもなんでも、とにかくメッセージを表示
'「権限が無いため表示できません」

End Try
End Sub
2004/08/31(Tue) 20:50:18 編集(投稿者)

エラー表示用のページを作れば平和に解決しますが、どうしてもやりたいのなら、
System.Windows.Forms内が使用できないので、Scriptなりでやる方法になると思います。

ただし、HTMLソースを直接弄らなくても、単純なことならできそうです。

以下のコードを書いてButton1を押下してみてください。
メッセージボックスが表示されるはずです。

  ' Page::Load()
  Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    Button1.Attributes.Item("OnClick") = "return confirm('ほれ!表示されたじゃろ?');"
  End Sub

原理を簡単に説明すると、Load時にButton1の属性を設定しているだけです。
そのキーはクリックイベント(OnClick())ってだけです。
イメージは簡単に掴めるはずです。

# 複雑なことをやる場合は、HTMLソースを直接弄ることになると思います。
>   Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
>     Button1.Attributes.Item("OnClick") = "return confirm('ほれ!表示されたじゃろ?');"
>   End Sub

ありがとうございます。
しかし私が今回やりたいことは、
その画面が起動できなかったとき、つまりエラーが起きたときに
何らかのメッセージを出したいのです。
詳しく言いますと、マスタメンテの画面でエクスプローラのフォルダの
アクセス権を設定して、画面を開ける人を制限したいのです。
それで、Server.Transferでエラーが発生したときの
メッセージをCatchで表示させたいと考えてます。

何か良い方法はありますでしょうか?
よろしくお願いします。
すいません、忙しくてなかなかフォローアップできませんでした。

■No5942に返信(まさしさんの記事)
> ありがとうございます。
> しかし私が今回やりたいことは、
> その画面が起動できなかったとき、つまりエラーが起きたときに
> 何らかのメッセージを出したいのです。
> 詳しく言いますと、マスタメンテの画面でエクスプローラのフォルダの
> アクセス権を設定して、画面を開ける人を制限したいのです。
> それで、Server.Transferでエラーが発生したときの
> メッセージをCatchで表示させたいと考えてます。
>
> 何か良い方法はありますでしょうか?
> よろしくお願いします。

そうですね...
Scriptの属性が指定されたコントロール自信のUIがイベントを起こさないと、ダメですよね。
(他から誘発させたりしても無反応です)
当然、イベントが始まる前に実行されるものですし、

やはり、エラーページを作った方が平和に解決できそうですね。(みんな、そうしてるようですし...)
Open.Windowで別ウィンドウをダイアログ風味に表示することもできますが、
そのページをオーナとしてモーダル表示できるかどうかわかりません。(未検証ですが多分できないでしょう)

はたまた、Click()が発生する前に処理を実行させ例外をキャッチしたら、
属性をセットして、アラート表示でいけるかもしれませが、かなりの駄仕様です(^^;

Button1.Attributes.Item("OnClick") = "alert('権限がないっすよ。');"

お役に立てなくて申し訳ありません。m(_ _)m
どこかのサイトで拾ってきたものですが。
Dim s As String
s = "<script language=javascript>alert('エラーメッセージ');</script>"
Response.Write(s)
この方法の欠点は画面が表示される前にalertが出る事です。


私が良く使う手は
ダミーのhidden項目を用意しておきエラーメッセージをhidden項目に格納。
スクリプトのonLoad時にhidden項目が空白でなければalert表示してhidden
項目をクリアするようにしてます。
欠点は面倒なところですかね。
クライアントスクリプト(javascript)に固執しないなら

Try
'みられるかな?
Server.Transfer("try.aspx")
response.end 'これはいらないかも
Catch
'ざんねーん
response.redirect("nogood.htm")
response.end

End Try

なんていかがでしょう。

#ps:te04いってきまーす>関係各位

DOBON.NET | プログラミング道 | プログラミング掲示板