在大型 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 的底部添加了一行
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/ajaxify") <=== ADDED THIS LINE
@RenderSection("scripts", required: false)
当我运行 Web 应用程序时,主页正常出现(如预期的那样),但联系页面使用移动样式出现。为了验证这一点,我在该媒体选择器中将主体设置为黄色,果然,它在 Ajaxified(动态加载)关于页面上启动:
这些 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;
}
}