大規模な Razor プロジェクトでAjaxifyの深いところに飛び込む前に、MVC4/Razor テストベッド アプリを作成して試してみるのが最善だと思いました。
再現:
VS 2012 で標準の MVC4/Razor Web アプリケーションを作成
必要な JQuery アドイン ファイルを追加しました (Razor プロジェクト テンプレートには既定で JQuery 1.8.2 が既に含まれています)。
これを BundleConfig.RegisterBundles に追加しました
bundles.Add(new ScriptBundle("~/bundles/ajaxify").Include(
"~/Scripts/jquery-scrollto-{version}.js",
"~/Scripts/jquery.history-{version}.js",
"~/Scripts/ajaxify-html5-{version}.js"
));
注: 簡単にアップグレードできるように、すべてのアドインの名前を MS 標準の ~/scripts/addinname-9.9.9.js 形式に変更します
Views/Shared/_Layout.cshtml の下部に 1 行追加
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/ajaxify") <=== ADDED THIS LINE
@RenderSection("scripts", required: false)
Web アプリを実行すると、ホームページは正常に (予想どおり) 表示されますが、連絡先ページはモバイル スタイルを使用して表示されます。これを確認するために、そのメディア セレクターでボディを黄色にしました。確かに、Ajax 化された (動的に読み込まれた) About ページが表示されます。
これらの CSS スタイルは、次のセレクター内の CSS で定義されます。
@media only screen and (max-width: 850px)
ページのサイズを変更するか、ブラウザを更新すると、ページは自動的に修正されます。
メディアセレクターは解像度に依存することを意図しているため、これが可能であることに驚いています。ブラウザー ウィンドウは常に 850 ピクセルを超えるため、モバイル スタイルはまったく表示されません。
実際の質問は次のとおりです。
さらなる混乱を避けるために、実際の質問は次のとおりです。画面が指定された最小サイズよりも大きい場合でも、メディアフィルターセレクターがトリガーされる理由を知る必要がありますか?
アップデート:
以下の標準 MVC4/Razor CSS モバイル スタイル セクションを最小限に減らしましたが、問題はまだ存在します。を削除した場合float: none
、問題は発生しません。
/********************
* Mobile Styles *
********************/
@media only screen and (max-width: 850px) {
body{
background-color: yellow;
}
/* header
----------------------------------------------------------*/
header .float-left,
header .float-right {
float: none;
}
}