- PR -

フレーム(_top)へのページ遷移/global.asax

1
投稿者投稿内容
そうまさん
常連さん
会議室デビュー日: 2003/07/17
投稿数: 27
お住まい・勤務地: ジャポン
投稿日時: 2005-05-20 12:02
こんにちは。

いろいろ過去ログを検索したのですが、なかなかうまく対処できず困っております。
どうかお力をお貸しください。

やりたいことは、システムの稼動時間外になったら、
ログインページへページ遷移させるというもので、
現在は、Global.asaxのApplication_BeginRequest関数内で、
毎回稼働時間のチェックを行っています。

WEBページは
+-----------------+
| ヘッダ部       |
+-----------------+
|コ|           |
|ン|           |
|テ|  メイン部    |
|ン|           |
|ツ|           |
|部|           |
+--+--------------+
のようにフレームで切っております。

この関数内で現在時刻を取得し、時間外ならば、

//サービス時間取得
ServiceTime st = new ServiceTime();

//サービス中フラグがfalseならログインページへ遷移
if(st.SERVICE_FLG == false)
{
Server.Transfer("Login.aspx");
}

とやっているのですが、
ページは遷移するのですが、
ログインページがメイン部に表示されてしまい、
画面全体に表示できません。

ログイン画面はフレームを解除して表示のようにしたいのですが、
どのように実現すればいいのかわからないです。

何か解決方法がありましたら、教えてください。

VS.NET2003 C#で開発しております。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-05-20 12:15
引用:

そうまさんさんの書き込み (2005-05-20 12:02) より:

ログイン画面はフレームを解除して表示のようにしたいのですが、
どのように実現すればいいのかわからないです。

何か解決方法がありましたら、教えてください。


JavaScriptで実現できる。
Parentがキーワード。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-05-20 12:31
どもでし。がると申します。
んっと。NAL-6295さんがひとつの回答をなさっているのですが。
個人的な「JavaScript嫌い」的観点から、違う方向をもうひとつ(笑

まず前提ですが。

引用:

そうまさんさんの書き込み (2005-05-20 12:02) より:

+-----------------+
| ヘッダ部       |
+-----------------+
|コ|           |
|ン|           |
|テ|  メイン部    |
|ン|           |
|ツ|           |
|部|           |
+--+--------------+
のようにフレームで切っております。


との事で。このPageの場合、本来4つの「静的HTMLもしくはプログラム」
が必要になります。
具体的には
・バックボーンにあるFRAMEを記述するPage
・ヘッダ部
・メイン部
・コンテンツ部

NAL-6295さんが書かれている方法は「ヘッダ部、コンテンツ部、メイン部の
いずれかがプログラム制御の場合」のやり方です。
言い方を変えると「バックボーンは静的なHTMLである」場合ですね。

私の場合、この「バックボーン部分」をプログラムにしてしまいます。
そうすれば実装は簡単に出来るか、と思います。

難点はプログラム本数が増えること。利点はJavaScriptを使わなくてすむこと。

まぁ、1提案程度に軽く読み流していただければ、と思います :-P
そうまさん
常連さん
会議室デビュー日: 2003/07/17
投稿数: 27
お住まい・勤務地: ジャポン
投稿日時: 2005-05-20 14:24
NAL-6295さん、がるがるさんお返事ありがとうございます。

当方としましては「Javascriptを利用する/しない」は
あまり気にしてないので実現できればどちらでも良いと思っております。。。

今からお二人の案を元に、テストしてみたいと思いますが、
@NAL-6295さんの場合
 ・フレームを解除するJavaScriptはすべてページに埋め込むことになるのでしょうか??
Aがるがるさんの場合
 ・ご指摘どおり4つのページが存在しております。
  また、FRAME制御しているページは静的HTMLというやつです。
  さてこの方法で実現する為にはどのようにすればいいのでしょうか??
  なにかヒントになるようなものでも与えてもらえたらと思うのですが。。。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-05-20 14:59
どもです。がるです。
引用:

そうまさんさんの書き込み (2005-05-20 14:24) より:
2.がるがるさんの場合
 ・ご指摘どおり4つのページが存在しております。
  また、FRAME制御しているページは静的HTMLというやつです。
  さてこの方法で実現する為にはどのようにすればいいのでしょうか??
  なにかヒントになるようなものでも与えてもらえたらと思うのですが。。。


ん〜っと…。
ある程度は「理解したうえで」自力で実装したほうがよいと思うので、
ざっくりとしたヒントを。

現状「FRAME制御しているページは静的HTML」との事で。
例えばこんな感じであろうかと推測いたします。

ファイル名:dokka.html
コード:
dokka.htmlのHTMLソース

<html>
<head>
<title>たいとる</title>
</head>
<frameset rows="20%,*">
  <frame src="left.html">
  <frame src="right.html">
</frameset>
</html>


いやまぁ「フレームの数が違う」とかって突っ込みはなしの方向で。

で。これを、このように書き換えます。
ファイル名:dokka.html -> dokka_frame.aspとか適当に
リンクファイル名を dokka.html から dokka.aspとかdokka.cgiとか適宜
コード:
プログラム 本体

//サービス時間取得
ServiceTime st = new ServiceTime();

if(true == st.SERVICE_FLG) {
  // サービス中フラグがtrueなのでFrame の Pageへ遷移
  Server.Transfer("dokka_frame.asp");
} else {
  //サービス中フラグがfalseなのでログインページへ遷移
  Server.Transfer("Login.aspx");
}



こげな感じで。
そうすれば
・特定の条件で、Frameを出すも一枚Pageを出すも自由自在
です。

ヒントになりましたでしょうか?

追伸:ネットの投稿では丸数字は使わないほうがいいですよ ^^
そうまさん
常連さん
会議室デビュー日: 2003/07/17
投稿数: 27
お住まい・勤務地: ジャポン
投稿日時: 2005-05-20 15:15
がるがるさん、引き続き返事ありがとうございます。

おおよその流れはようやく把握できたような気がします^_^;
ヒントありがとうございました。

現在、NAL-6295さんのヒントをもとに、Login.aspxにjavascriptを埋め込み、
このページは常にフレームを解除しますよという方法を試しています。

<script language="javascript">
<!--
//ログインページは常にフレーム解除
if(self != top)
{
top.location.href = self.location.href;
}
//-->
</script>

と言う方法で、最初に困っていたような、
メイン部にログインページが表示されるようなことはなくなりました。

が、IEの表示されているURLが***/Login.aspxではないため、
あとちょっとといったところです。

少し希望が見えたので、まずはJavascriptで実現を目指してみたいと思います。

がるさんの方法も勉強の為チャレンジしたいと思いますので、
終わり次第、成功/失敗の報告をしたいと思います。

P.S.投稿時のマナーわかっておらず恥ずかしい限りです。
   ご指摘ありがとうございました。
そうまさん
常連さん
会議室デビュー日: 2003/07/17
投稿数: 27
お住まい・勤務地: ジャポン
投稿日時: 2005-05-23 10:00
自己レスです。

top.location ='/****/Login.aspx';

に変更することで、IEの表示されているURLも
「〜Login.aspx」で表示されるようになりました。

ちなみにがるさんの手法はまだチャレンジできていません。
時間を見つけて挑戦したいと思います^^;
1

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