■
最近仕事でどっぷり深みにハマったので備忘録
最近の仕事はASP.Netでイントラのwebっぽいの作ることが多いのですが
色々要望を聞いて
「IE6固定でいいからモーダルでページを出したい」
ってことになりました。
こんな感じ
まぁ軽ーい気持で作り始めたんですが
しょっぱなから躓く
=============================================================
Q.あれ?ShowModalDialogで出したページ内でPOSTしたら
新しいページが開くんですけど??
=============================================================
ShowModalダイアログで出した2ページ目で
イベント発生させると別のページが開きます。
A.ヘッダに< base target="_self" >を入れる。
ふっふっふ。これでももう大丈夫。
勝ったな!!
と思ってたのもつかの間
=============================================================
Q. あれ?ShowModalDialogで出したページが古いデータ出してるんですけど?
=============================================================
仕様です。
ShowModalDialogはページをキャッシュします。
A.ページをキャッシュさせないようにする必要があります。
QueryStringに時間つけてもよかったんですが
※http://・・・・・?date=200907130101
ヘッダに< meta http-equiv="Cache-Control" content="no-cache" >< meta http-equiv="Pragma" content="no-cache" > < meta http-equiv="Expires" content="-1" >
をつけました。
もうないやろ!
ちょっとShowModalDialog使っただけなのになんでこんなにハマるのさ
と思ってたら
=============================================================
Q.あれ?ファイルのダウンロード出来ない?
=============================================================
仕様ですorz
showmodaldialogがResponce.Write(ファイル)をザンギエフのスクリューパイルのように吸いこんでます
コイツ…
A.
案1:ファイル作ってHyperLinkにtarget _blankなリンクを作ってScriptManager使ってjavascriptで無理やりリンククリック
案2:iframe使ってダウンロード用のページ作成
とりあえず案2採用。
IISの仮想ディレクトリ上に一時フォルダを作ってファイルを作成
↓
iframeでダウンロードして作った仮想ディレクトリ毎削除
・・・
=============================================================
Q.あれ?セッション切れてない?
しかもForm認証残ったままでSessionID変わらないのにセッション情報だけ消えてる???
=============================================================
仕様ですorz
仮想ディレクトリが削除されたら
全てのセッション情報がクリアされます!!!
仮想ディレクトリ上で一時フォルダ作れないじゃん。。。。
仕方なく別ドライブに書き込み&設定ファイルをweb.configに書き込み(これをあんまりしたくなかったのに…)
よしよし、まぁなんだかんだあったけど
これでダウンロードもOKやなってことでサーバに乗っけて環境見てると
=============================================================
Q.あれ?またダウンロードできない?
=============================================================
iframeがうんともすんとも言いやがらねぇ
まさか。。。。と思って調べると
A. iframeはイントラネットもしくは信頼済みサイトに入ってないと無効ですな。
IEで言えば
http://ホスト名 のホスト名の所が
「.」が含まれている場合(IPアドレスでの指定やFQDN名:computer.domain等)はインターネット
「.」が含まれていない場合(単一コンピュータ名)はイントラネット
と見てるようですね。
まぁよくよく考えたら必要なセキュリティだわな。
iframe…やっぱ使わない方がいいのかな…
時代の逆行って感じもするし
ただUpdatePanelとScriptManagerでjavascript駆使して
マクロっぽく処理させるってのはどうかなぁとは思う。