- PR -

メニューコントロールのサブメニューの挙動について

1
投稿者投稿内容
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2007-03-16 07:28
お世話になります。

前から悩んでおり後回しにしていたのですが、もしかしてこれが原因?というものを思いついたので質問させてください。
現象としては、以下のリンクの相談と同じだと思うのですが、

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=834246&SiteID=7

メニューコントロールを配置し、web.sitemapをSiteMapDataSourceでバインドします。
ちなみに、配置はマスターページのトップに横方向にメニューが並ぶイメージです。
実現したいことは、第一階層のメニューの上にマウスを持ってくると、その下の階層がダイナミックに表示されて親メニューの直下に表示されるという、よくありがちなものです。

しかし、VisualStudio2005を使い始めて間もない頃にこれをやってみて、直下ではなく左端の方に表示されるし、サブメニューが初期状態で隠れていないし、テーブルに入れているとサブメニューの表示と一緒にテーブルが拡がってしまうし、いつくかのサイトでやってみましたがやはり同じ。
これじゃあ使えないなあと思い、しばらく放っておきました。
が・・少し前に作ったサイトで試しに配置してみると・・イメージどおりにできる?!何故だ?

違いを確認するために、成功したサイトのコードをまるまるコピーしてできないサイトに貼り付けてもダメ。ページを新しいのを作ってやってもダメ。sitemapが悪いのかと弄ってもダメ、生成されたコードを見ても大きな違いはなし・・。
とにかく全くといって違いがないのに出来る場合と出来ない場合があるので訳がわからない状態でした。

いろいろやってみて一つ気づいたのは、出来るサイトというのは、VisualStudio2005で新たに作成したサイトで、出来ないサイトというのは、VisualStudio2003からアップグレードウイザードを使って2005に移行したサイトではないのかということです。といっても自分のところだけではサンプル数が少なくてそうだとははっきりいえない状態です。

リンク先の質問された方はページを新たに作って解決したということですが、恐らく同じような状況で、サイト自体を新たに作成されたのではないかと推測しています。

皆さんのところではそういう現象は起きていませんでしょうか?
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2007-03-18 01:29
自己解決しました(と思います)

AJAX 1.0をダウンロードしたので試しに使ってみようと思い、今回の問題が発生していた非AJAXサイトをAJAXを使えるようにするため、web.configを書き換えていたところ、その中に次の記述を見つけました。

<xhtmlConformance mode="Legacy"/>

このLegacyって何だろうと思い検索してみると、どうやらASP.NET1.1との互換性確保のための記述のよう。
VS2003→VS2005の場合にのみ問題が発生するのであれば、これが怪しいなと思い、試しにコメントアウトしてみたら・・・見事に動いてくれました。

後から考えてみると、サイト毎に挙動が違うならweb.configを真っ先に疑うべきでしたね。しかし、コメントアウトする前と後に生成されるコードを見てみましたが違いはよくわかりませんでした。まあこういうものだと理解することにします。

どうもお騒がせしました。
1

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