C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

クラス化したロジックからの画面制御


(過去ログ 2 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■1822 / inTopicNo.1)  クラス化したロジックからの画面制御
  
□投稿者/ 麦茶 二等兵(1回)-(2005/11/07(Mon) 18:12:44)

分類:[VB.NET] 


分類:[VB.NET] 

初心者なので、もし基本的すぎる質問だったらすみません。色々調べたのですが
とあるロジックをクラス化する場合の制御がよくわかりません。お手数ですが、わかる方いらっしゃいましたら教えてください。

画面1から、権限チェックのクラスを呼びます。
権限チェッククラスの中で、DBをチェックして権限が無かった場合、画面1には戻らず、
画面2に飛ぶロジックを組みたいです。
権限チェックをクラス化しない場合は、ロジックがうまく組めたのですがクラス化してからうまく動かなくなりました。
以下の、ロジックだと権限チェックの中で画面2を呼び出しても制御が画面1に戻ってしまうため、結局画面1が表示されます。


****画面1「GAMEN1」のロジック****
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
'権限チェック
         CALL clcKengenChk.KengenChk("GAMEN1")  
End Sub

****権限チェックのロジック****
Public Class clsKengenChk '権限チェック
Inherits System.Web.UI.Page

#Region "権限チェック"
Public Function KengenChk(ByVal _strScrId As String) As Boolean
KengenChk = True
'わたってきた画面IDにより、権限SQL-DBを読み込む(ロジック省略)

If 画面の権限 = 否 Then
'認証チケットを削除(永続的な Cookie またはセッション
'Cookie のいずれかが削除)
System.Web.Security.FormsAuthentication.SignOut()
Session.Clear()

Dim script As New System.Text.StringBuilder
script.Append("<script language=""JavaScript"">")
script.Append("top.location.href =""GAMEN2.aspx"";")
script.Append("</script>")

Page.RegisterStartupScript("authenticated", cript.ToString)

'※上記のロジックを「Response.Redirect("AAA0101.aspx")」にしてもだめでした

End If
End Function
End Class


0
引用返信 編集キー/
■1825 / inTopicNo.2)  Re[1]: クラス化したロジックからの画面制御
□投稿者/ 中博俊 神(245回)-(2005/11/07(Mon) 22:10:52)
中博俊 さんの Web サイト

分類:[VB.NET] 

画面をどう遷移させるかは画面の問題ですよね?
おそらく切り分けがよくないと思います。
遷移といっても実際に遷移しているわけじゃなくって、元の画面は隠れているだけだったり、元の画面は閉じて、別の画面の制御下で実行していたりどのようにするかを一度まとめてみましょう。

0
引用返信 編集キー/
■1837 / inTopicNo.3)  Re[2]: クラス化したロジックからの画面制御
□投稿者/ 麦茶 二等兵(2回)-(2005/11/08(Tue) 14:35:58)

分類:[VB.NET] 

No1825に返信(中博俊さんの記事)
> 画面をどう遷移させるかは画面の問題ですよね?
> おそらく切り分けがよくないと思います。
> 遷移といっても実際に遷移しているわけじゃなくって、元の画面は隠れているだけだったり、元の画面は閉じて、別の画面の制御下で実行していたりどのようにするかを一度まとめてみましょう。

はい、実際遷移しているわけじゃなくて、権限が合わなければログイン画面(画面2)に戻るという処理を行いたいのです。
ですから、画面1で、画面に付随したロジックが動く。そのロジックの中でクラス化した権限チェックロジックを呼び出す。呼び出されたロジック内で権限が合わなかった場合、元画面(画面1)を閉じて、画面2を表示する(元画面のロジックには戻らなくても可・もしくは戻ってすぐに抜ける)としたいのですが・・・
権限チェックロジックの中で、画面の制御を行いたいのですが無理でしょうか?
権限チェックのロジックで、権限エラーとして元のロジックに戻り、そのロジック(画面1のロジック)の中で画面2に飛ぶのは確かに出来ました。しかし、これだと今回のクラス化の意味が半減してしまうので(様々な画面から使用するため)できれば権限チェックのロジックで行いたいのです。
よろしくお願いします。

0
引用返信 編集キー/
■1838 / inTopicNo.4)  Re[3]: クラス化したロジックからの画面制御
□投稿者/ aiai 二等兵(4回)-(2005/11/08(Tue) 15:45:27)

分類:[VB.NET] 

スクリプトを画面1のページに出力すればよいのではないでしょうか?

****画面1「GAMEN1」のロジック****
:
         CALL clcKengenChk.KengenChk("GAMEN1", Me.Page)  

****権限チェックのロジック****
#Region "権限チェック"
Public Function KengenChk(ByVal _strScrId As String, ByVal p As Page) As Boolean
:
p.RegisterStartupScript("authenticated", cript.ToString)


0
引用返信 編集キー/
■1839 / inTopicNo.5)  Re[4]: クラス化したロジックからの画面制御
□投稿者/ 麦茶 二等兵(3回)-(2005/11/08(Tue) 16:25:12)

分類:[VB.NET] 

No1838に返信(aiaiさんの記事)
> スクリプトを画面1のページに出力すればよいのではないでしょうか?
>
> ****画面1「GAMEN1」のロジック****
> :
>          CALL clcKengenChk.KengenChk("GAMEN1", Me.Page)  
>
> ****権限チェックのロジック****
> #Region "権限チェック"
> Public Function KengenChk(ByVal _strScrId As String, ByVal p As Page) As Boolean
> :
> p.RegisterStartupScript("authenticated", cript.ToString)
>

ありがとうございました。試した結果、希望通りの動きになりました。
元の画面のPage(この場合パラメータでわたったp)がスクリプトを出力するように仕向けているんですね。初心者にはやっぱり、難しいです。
ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -