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

ASP.NET 2.0でのframesetの使用方法 類似機能

環境/言語:[ASP.NET 2.0  VisualStudio2005(VB)  SqlServer2008]
分類:[ASP.NET]

皆さま

 いつも大変参考にさせて頂いております。
 今回はframesetタグについてご教示・アドバイス願います。
 ASP2.0以降、各種Webブラウザー対応等で…
 framesetタグが推奨されずタグが開発環境の
 Microsoft Visual Web Developer 2008 Express Editionから
 消えて無くなってしまっているようです。
 frameset/frame に代わるASPタグも見つからず、
 悪戦苦闘しております。

■実現したい事
 上下に分割した画面をASP.NETで実現させたい。
 分割画面にスクロールバーをつけたい。
 
■ロジック 
<%@ Page Title="" Language="VB" MasterPageFile="~/Master/MasterPage.master" AutoEventWireup="false" CodeFile="DisplayFrame.aspx.vb" Inherits="Checker_DisplayFrame" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
<frameset rows="50%,*">
<frame src="12345.aspx">
<frame src="qwert.aspx"">
</frameset>
</asp:Content>

■エラー
 ・検証 (XHTML 1.0 Transitional): 要素 'frameset' はサポートされていません
 ・検証 (XHTML 1.0 Transitional): 要素 'frame' はサポートされていません。

ご教示・アドバイス、参考ロジックなど
宜しくお願いいたします。
■No28415に返信(はちまきさんの記事)

画面を分割するのはdivタグを使用するとよいと思います。
<div>
  <div>上</div>
  <div>下</div>
</div>

スクロールバーをつけるのはスタイルシートでoverflow:scrollを指定するとよいと
思います。
<style type="text/css">
  #out {
    height : 100%;
    width : 100%;
  }
  #top {
    height : 50%;
    width : 100%;
    overflow : scroll;
    background-color : red;
  }
  #bottom {
    height : 50%;
    width : 100%;
    overflow : scroll;
    background-color : blue;
  }
</style>
<div id="out">
  <div id="top">上</div>
  <div id="bottom">下</div>
</div>

他のページを読み込むというframeの機能を代替することはできないような気がしま
す。複数のファイルを参照して1つのページを構成するとするならば、参照するaspx
をascxに、ページをユーザーコントロールに変換するとよいのではないかしら。と、
わたしはそのように考えます。
■No28419に返信(もりおさんの記事)
> ■No28415に返信(はちまきさんの記事)
>
> 画面を分割するのはdivタグを使用するとよいと思います。
> <div>
> <div>上</div>
> <div>下</div>
> </div>
>
> スクロールバーをつけるのはスタイルシートでoverflow:scrollを指定するとよいと
> 思います。
> <style type="text/css">
> #out {
> height : 100%;
> width : 100%;
> }
> #top {
> height : 50%;
> width : 100%;
> overflow : scroll;
> background-color : red;
> }
> #bottom {
> height : 50%;
> width : 100%;
> overflow : scroll;
> background-color : blue;
> }
> </style>
> <div id="out">
> <div id="top">上</div>
> <div id="bottom">下</div>
> </div>
>
> 他のページを読み込むというframeの機能を代替することはできないような気がしま
> す。複数のファイルを参照して1つのページを構成するとするならば、参照するaspx
> をascxに、ページをユーザーコントロールに変換するとよいのではないかしら。と、
> わたしはそのように考えます。

もりおさん、
 アドバイス有難うございます。
 やはりframeset、frame タグを使用して既存ASPXファイルを読み込む事が
 ASP.NETになってからできなくなってしまったのですね。
 非推奨とは言え、すごく便利だと思っていたのですが、
 ASCXについて、勉強してみます。

 分割DIV手法のご教示ありがとうございます。
■No28455に返信(はちまきさんの記事)
> やはりframeset、frame タグを使用して既存ASPXファイルを読み込む事が
> ASP.NETになってからできなくなってしまったのですね。

すこし誤解があると思うんです。

・検証 (XHTML 1.0 Transitional): 要素 'frameset' はサポートされていません。    
・検証 (XHTML 1.0 Transitional): 要素 'frame' はサポートされていません。
上記のエラーは、厳密にはエラーではなく警告ですよね。

警告は不可能を意味しません。frameset、frameはXHTML 1.0 Transitionalとしてサ
ポートされないので使用しない方がよいということでありまして、出力するXHTMLはX
HTML 1.0 Transitionalの仕様に準拠せず、XHTMLとして好ましくないものではありま
すが、ページをブラウザで表示することはできるかと思います。

frameset、frameをどうしても使用したいということでありますれば、DOCTYPEをfram
eset、frameを許容するものに変えればよいです。

マスターページに以下のDOCTYPEの記述があると思います。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

frameset、frameを許容するDOCTYPEに変えるとよいです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

警告の出力はVisual Studioの検証の機能によるものです。
ツール -> オプション -> テキストエディタ -> HTML -> 検証 -> ターゲット
で、どのDOCTYPEにもとづいて検証を行うかを指定することができます。XHTML 1.0 F
ramesetを指定するとよいと思います。

Visual Studio 2005が手元にありませんので、Visual Studio 2008の設定をもとにし
ました。おそらくVisual Studio 2005でも同じような感じでできるのではないかと思
います。
■No28457に返信(もりおさんの記事)
> ■No28455に返信(はちまきさんの記事)
>>やはりframeset、frame タグを使用して既存ASPXファイルを読み込む事が
>>ASP.NETになってからできなくなってしまったのですね。
>
> すこし誤解があると思うんです。
> マスターページに以下のDOCTYPEの記述があると思います。
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> frameset、frameを許容するDOCTYPEに変えるとよいです。
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
>
> 警告の出力はVisual Studioの検証の機能によるものです。
> ツール -> オプション -> テキストエディタ -> HTML -> 検証 -> ターゲット
> で、どのDOCTYPEにもとづいて検証を行うかを指定することができます。XHTML 1.0 F
> ramesetを指定するとよいと思います。
>
> Visual Studio 2005が手元にありませんので、Visual Studio 2008の設定をもとにし
> ました。おそらくVisual Studio 2005でも同じような感じでできるのではないかと思
> います。

ご教示有難うございます。完全に誤解しておりました。
マスターページのDOCTYPEを変更したのですが、
マスターページの内容が表示されるのみで
すでに作成済みASPファイルを参照してくれませんでした。

自分の開発環境のMicrosoft Visual Web Developer 2008 Express Editionでは、
ツール→オプション→検証 を選択後、ターゲットがプルダウン選択できました。
アドバイスのようにXHTML 1.0 Framesetに変更したですが、
状況は変わらずでした、もう少し悪戦苦闘してみます。
一筋縄では行かないようです。
■No28464に返信(はちまきさんの記事)
> マスターページの内容が表示されるのみで
> すでに作成済みASPファイルを参照してくれませんでした。

ブラウザで当該ページを参照して、frameのsrcに指定したページが参照されなかった
ということですか。それともVisual Studioのデザイナで参照されなかったというこ
とですか。

Visual Studioのデザイナで参照されないのは仕様だと思います。
わたしの環境でもそうなります。

> アドバイスのようにXHTML 1.0 Framesetに変更したですが、
> 状況は変わらずでした、もう少し悪戦苦闘してみます。

状況が変わらないというのは以下のエラーが出力されるということですか。
・検証 (XHTML 1.0 Transitional): 要素 'frameset' はサポートされていません。    
・検証 (XHTML 1.0 Transitional): 要素 'frame' はサポートされていません。

設定が反映されるまで、すこし時間がかかることがあります。
ページを一度閉じて、開きなおしてみてはいかがでしょうか。
iframeはどうでしょ?
divだとsrcは指定できないでしょうし
使い勝手で言えばframesetの方が断然いいと思いますが><

警告とか気にしない方がいいと思います
どのブラウザでも正常な動作をさせるためにあえて
非推奨のCSS等を埋めることはよくあるので
だた・・・気持ちはわかります
■No28474に返信(Miraさんの記事)
> iframeはどうでしょ?
> divだとsrcは指定できないでしょうし
> 使い勝手で言えばframesetの方が断然いいと思いますが><
>
> 警告とか気にしない方がいいと思います
> どのブラウザでも正常な動作をさせるためにあえて
> 非推奨のCSS等を埋めることはよくあるので
> だた・・・気持ちはわかります
>

Miraさん、
 有難うございます。
 iframeを試してみます。
 framesetがすごく使い勝手がよかったのですが、
 自環境だとやはり既存ASPXファイルを読み込んでくれずでした。

 

 
■No28481に返信(はちまきさんの記事)
> ■No28474に返信(Miraさんの記事)
>>iframeはどうでしょ?
>>divだとsrcは指定できないでしょうし
>>使い勝手で言えばframesetの方が断然いいと思いますが><
>>
>>警告とか気にしない方がいいと思います
>>どのブラウザでも正常な動作をさせるためにあえて
>>非推奨のCSS等を埋めることはよくあるので
>>だた・・・気持ちはわかります
>>

幾度と試したのですが、自環境ではframesetで既存ASP.NET(ASPXファイル)を
読み込む事が出来ます、上長に相談し別ASP画面を作成し対応する事になりました。根本的な解決には至りませんでした、クローズとさせていただきます。

ご教示・ご指導頂きました皆様、本当にありがとうございました。
解決済み!

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