Layout.mobile.cshtml突然停止工作--不应与缓存相关
周五我离开了,我的应用程序在开发模式下工作……今天早上我进来时,Layout.Mobile.chtml没有被使用……这是开发模式,所以每次我仍然启动web服务器。。。。我读到了一个与缓存相关的类似问题……但我不认为这与我的问题有什么关系,因为一旦web服务器关闭,缓存就会被清除 我使用Visual Studio 2012作为我的开发“web服务器” 一切都在运行,我不知道问题出在哪里,也不知道下一步该怎么办。任何关于如何诊断此问题或在何处查找的建议都将不胜感激 这只适用于Layout.Mobile.cshtml…当我切换回Layout.cshtml时,它被称为fine 在my global.asax.cs中,我设置了以下选项,以强制firefox使用移动布局显示:Layout.mobile.cshtml突然停止工作--不应与缓存相关,layout,asp.net-mvc-4,Layout,Asp.net Mvc 4,周五我离开了,我的应用程序在开发模式下工作……今天早上我进来时,Layout.Mobile.chtml没有被使用……这是开发模式,所以每次我仍然启动web服务器。。。。我读到了一个与缓存相关的类似问题……但我不认为这与我的问题有什么关系,因为一旦web服务器关闭,缓存就会被清除 我使用Visual Studio 2012作为我的开发“web服务器” 一切都在运行,我不知道问题出在哪里,也不知道下一步该怎么办。任何关于如何诊断此问题或在何处查找的建议都将不胜感激 这只适用于Layout.Mobil
//The following forces Firefox to use the Mobile View ONLY
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("mobile")
{
ContextCondition = (context =>
context.Request.UserAgent.IndexOf("Mozilla", StringComparison.OrdinalIgnoreCase) >= 0)
});
我的_ViewStart.cshtml文件是:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
My_Layout.Cshtml是:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title - Etracs</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@Styles.Render("~/Content/css")
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/jquery-migrate-1.1.1.js"></script>
@RenderSection("scripts", required: false)
</head>
<body>
<header>
*@
</header>
<div id="body">
<section class="content-wrapper main-content clear-fix">
@RenderBody()
</section>
</div>
@Html.Partial("_ViewSwitcher")
<footer>
<div class="content-wrapper">
<div class="float-left">
<p>© @DateTime.Now.Year - Turning Basin Services</p>
</div>
</div>
</footer>
</body>
</html>
@ViewBag.Title-Etracs
@style.Render(“~/Content/css”)
@RenderSection(“脚本”,必需:false)
*@
@RenderBody()
@Html.Partial(“_ViewSwitcher”)
&抄袭@DateTime.Now.Year-转折盆地服务
My_Layout.Mobile.cshtml是:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
@* @Styles.Render("~/Content/Mobile/css") *@
@* @Styles.Render("~/Content/jquerymobile/css") *@
<link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile-1.2.0.css" />
<link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile.theme-1.2.0.css" />
@* @Scripts.Render("~/bundles/jquery") *@
@* @Scripts.Render("~/bundles/jquerymobile") *@
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/jquery-migrate-1.1.1.js"></script>
<script src="~/Scripts/jquery.mobile-1.2.0.js"></script>
<script>
$(document).ready(function () {
$.mobile.ajaxEnabled = false;
});
</script>
@RenderSection("scripts", required: false)
</head>
<body>
<div data-role="page" data-theme="c">
<div data-role="header">
@RenderSection("backbtn", false)
<h1>@ViewBag.Title</h1>
@RenderSection("Home", false)
</div>
<div data-role="content">
@* @RenderSection("featured", false) *@
@RenderBody()
</div>
<div data-role="footer">
<h4> @Html.Partial("_ViewSwitcher") © @DateTime.Now.Year - Turning Basin Services</h4>
</div>
</div>
</body>
</html>
@视图包。标题
@*@Styles.Render(“~/Content/Mobile/css”)*@
@*@Styles.Render(“~/Content/jquerymobile/css”)*@
@*@Scripts.Render(“~/bundles/jquery”)*@
@*@Scripts.Render(“~/bundles/jquerymobile”)*@
$(文档).ready(函数(){
$.mobile.ajaxEnabled=false;
});
@RenderSection(“脚本”,必需:false)
@渲染部分(“backbtn”,false)
@视图包。标题
@渲染部分(“主”,假)
@*@RenderSection(“特色”,假)*@
@RenderBody()
@Html.Partial(“_ViewSwitcher”)©@DateTime.Now.Year-转折盆地服务
在我的视图中,我通常使用viewstart…将视图设置为隐式映射到布局。。。。但是,my.Login.Mobile.cshtml将关联硬连接到移动布局,如下所示:
@model TBS.Etracs.Web.Main.Models.LoginModel
@{
ViewBag.Title = "Log in";
Layout = "~/Views/Shared/_Layout.Mobile.cshtml";
}
@Html.ValidationSummary(true)
<section id="loginForm">
@* @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) { *@
@using (Html.BeginForm ("Login")) {
@Html.AntiForgeryToken()
<div data-role="content">
<div data-role="fieldcontain">
<label for="UserName">UserName:</label>
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div data-role="fieldcontain">
<label for="Password">Password</label>
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<div data-role="fieldcontain">
<label for="ProgramMode">ProgramMode</label>
<select name="ProgramMode" id="ProgramMode">
<option value="VW">VW</option>
<option value="Porsche">Porsche</option>
<option value="Bentley">Bentley</option>
</select>
</div>
<div data-role="fieldcontain">
<label for="ConnectionMode">ConnectionMode</label>
<select name="ConnectionMode" id="ConnectionMode">
<option value="Production">Production</option>
<option value="Test">Test</option>
</select>
</div>
<input type="submit" value="Log in" />
</div>
}
</section>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
@model TBS.Etracs.Web.Main.Models.LoginModel
@{
ViewBag.Title=“登录”;
Layout=“~/Views/Shared/_Layout.Mobile.cshtml”;
}
@Html.ValidationSummary(true)
@*@using(Html.BeginForm(new{ReturnUrl=ViewBag.ReturnUrl})){*@
@使用(Html.BeginForm(“登录”)){
@Html.AntiForgeryToken()
用户名:
@Html.TextBoxFor(m=>m.UserName)
@Html.ValidationMessageFor(m=>m.UserName)
密码
@Html.PasswordFor(m=>m.Password)
@Html.ValidationMessageFor(m=>m.Password)
编程模式
大众汽车
保时捷
宾利
连接模式
生产
试验
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
}
使用“一瞥”,我发现仍在调用并包含_layout.mobile.cshtml…问题是它不起作用…这与我之前遇到的问题有关
在my_Layout.Mobile.chtml中,我回到了下面的代码,我的布局现在可以工作了
<link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile-1.2.0.css" />
<link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile.theme-1.2.0.css" />
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/jquery-migrate-1.1.1.js"></script>
<script src="http://code.jquery.com/mobile/latest/jquery.mobile.min.js"></script>
我用它替换了my_layout.Mobile.cshtml中的以下几行
<link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile-1.2.0.css" />
<link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile.theme-1.2.0.css" />
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/jquery-migrate-1.1.1.js"></script>
<script src="~/Scripts/jquery.mobile-1.2.0.js"></script>
我非常困惑的一个大问题是发生了什么……这个prevous工作了几天,然后停止了工作……我们非常感谢您的输入。我知道您承认您不相信这与缓存有关,但我在这里添加它,因为在使用移动视图时必须注意这一点 这里解释了缓存错误 戴夫·沃德: 当使用MVC4的移动视图时,每个人都应该注意一些事情 支持的原因是RTM版本中存在导致 视图丢失后为移动设备呈现错误的视图 第一次的分辨率缓存。棘手的是你 在调试模式下或在中处于不活动状态15分钟之前不会注意到这一点 释放模式,所以让错误行为溜走非常容易 投入生产。NuGet有一个简单的解决方案,Rick Anderson 包括: 另请参阅本文中的评论 如果您有一个自定义的视图引擎(就像我一样),您可以在安装nuget包后更改基类:
public class SiteIdentityViewEngine : Microsoft.Web.Mvc.FixedRazorViewEngine, IVirtualPathFactory
我刚刚确认安装了FixedDisplayModes nuget软件包。。。。