2012-01-23 1 views
0

私は当初vs2008を使って作成されたWebサイトを持っています。最近vs2010にアップグレードしました。私はプロジェクトをvs2010プロジェクトに変換したとき、ターゲットフレームワークを3.5から4.0に更新しないように指示しました。限り、私はすべての参照とプロジェクトのフレームワークを見てから見ることができるすべてはまだ3.5ですが何らかの理由で私のASP.NETメニューはレンダリングhtmlテーブルからスパンに行った。私は4.0でMenu.RenderingModeプロパティを追加し、Tableの代わりにListにデフォルト設定しましたが、ビルドしているものはすべて3.5であるだけでなく、手動でTableモードに設定することもできないことを知っています。誰でもこの問題を修正していることを知っています(スパンや4.0へのCSSのハック以外のものが望ましいです)。 4.0にアップグレードするだけですが、まだ準備が整っていません。私はliタグ(リスト)を使ってolまたはulをレンダリングしていないので、それを修正するとは確信していません。レンダリングスパンです。ASP.NETメニューのレンダリングがvs2008からvs2010と異なる

+0

ウェブサイトのDOCタイプは見ましたか?あなたの新しいDOCタイプの 'table'タグは古くなっているので、すべてのテーブルを' span 'としてレンダリングしていると思います。一度それを調べてみてください。 – uday

+0

私はWinMergeを使ってhtmlレンダリング(vs2008からvs2010まで)の違いを見てきました。 doctypeが同じであるように見える<!DOCTYPE html PUBLIC " - // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> –

+0

私が言及するのを忘れたことの1つは、vs2010のlocalhostではうまく見えますが、IIS(私たちの場合はIIS 7)に公開されたときに問題が発生しています。 IEとFirefoxではうまく見えますが、Chromeではうまくいきません。 –

答えて

4

メニューレンダリングの問題は、vs2008から2010への変換には関係しません。 asp.net 3.5のasp.menuコントロールは、chromeとsafariで正しくレンダリングされません。

SafariとChromeの両方でこの問題を解決する最も簡単な方法は、このアダプタを無効にするために、独自のブラウザファイルをApp_Browserに含めることです。

<browsers> 
    <!-- Disable the Menu Adapter for the Safari browser without changing the root browser file --> 
    <browser refID="Safari1Plus"> 
    <controlAdapters> 
     <adapter controlType="System.Web.UI.WebControls.Menu" 
       adapterType="" /> 
    </controlAdapters> 
    </browser> 
</browsers> 

と (使用している場合)だけでページまたはマスターページの読み込みイベントに以下のコードを貼り付けます。

if (Request.UserAgent.IndexOf("AppleWebKit") > 0) 
{ 
    Request.Browser.Adapters.Clear(); 
} 
+0

vs2010ではなくvs2008から公開されたときにこのプロジェクトがうまく動作するため、まだvs2010に関連しているようです。私は、あなたとブレントが何とか何とかして(vs2008/vs2010から)言及した.browserファイルを扱っていると思います。なぜなら、Request.Browser.Adapters.Clear()呼び出しがそれを修正したためです。サードパーティーのソリューションのために.browserファイルをすでに持っていました。今まで気付かなかったか知っていませんでした。 –

+0

ここに私はvs2008のスパンを持っています。とにかく、ASP.NET用のデフォルトのブラウザファイルは、Safariブラウザ用の特別なアダプタにMenuコントロールを指示します。残念ながら、ASP.NETはUserAgentをChromeから解析し、S​​afariとして認識します。 – Shahdat

関連する問題