我星期五离开,我的应用程序在开发模式下工作....我今天早上来了,并没有使用Layout.Mobile.chtml .....这是DEV模式所以我仍然启动Web服务器每次....我读到了与缓存相关的类似问题....但是我没有看到这与我的问题有什么关系,因为一旦Web服务器关闭缓存被清除。
我使用Visual Studio 2012作为我的开发“web服务器”。
一切都在运行,我看不出问题出在哪里,也不明白下一步要去哪儿。任何有关如何诊断此问题或在何处查看的建议都将受到赞赏。
这仅适用于Layout.Mobile.cshtml ....当我切换回Layout.cshtml时,它被称为正常....
在我的global.asax.cs中,我有以下设置强制firefox使用移动布局显示:
//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";
}
我的_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>
我的_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>
在我的视图中,我通常使用viewstart设置视图到impliclity map到布局....但是,我的.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")
}
答案 0 :(得分:0)
使用Glimpse我发现_layout.mobile.cshtml仍然被调用并包含....问题是它无法工作....这与我之前遇到的问题有关.....
在我的_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>
我用它来替换_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>
我非常困惑的一个重要问题是发生了什么......这种流行工作了几天然后退出工作.....输入将不胜感激。
答案 1 :(得分:0)
我看到你承认你不相信这与缓存有关 - 但是我在这里添加了这个,因为在使用移动视图时要注意这一点很重要。
此处解释了缓存错误
戴夫沃德:使用MVC 4的移动视图时,每个人都应该注意的事项 支持是RTM版本中存在导致错误的错误 在视图丢失后为移动设备呈现错误视图 第一次解析缓存棘手的部分是你 在调试模式下或直到15分钟不活动时才会注意到这一点 发布模式,所以让错误的行为滑倒是非常容易的 投入生产。 NuGet有一个简单的解决方案,Rick Anderson 涵盖在这里:
http://blogs.msdn.com/b/rickandy/archive/2012/09/17/asp-net-mvc-4-mobile-caching-bug-fixed.aspx
如果您有自定义视图引擎(就像我一样),您可以在安装nuget包后更改基类:
public class SiteIdentityViewEngine : Microsoft.Web.Mvc.FixedRazorViewEngine, IVirtualPathFactory