Layout.mobile.cshtml突然停止工作--不应与缓存相关

Layout.mobile.cshtml突然停止工作--不应与缓存相关,layout,asp.net-mvc-4,Layout,Asp.net Mvc 4,周五我离开了,我的应用程序在开发模式下工作……今天早上我进来时,Layout.Mobile.chtml没有被使用……这是开发模式,所以每次我仍然启动web服务器。。。。我读到了一个与缓存相关的类似问题……但我不认为这与我的问题有什么关系,因为一旦web服务器关闭,缓存就会被清除 我使用Visual Studio 2012作为我的开发“web服务器” 一切都在运行,我不知道问题出在哪里,也不知道下一步该怎么办。任何关于如何诊断此问题或在何处查找的建议都将不胜感激 这只适用于Layout.Mobil

周五我离开了,我的应用程序在开发模式下工作……今天早上我进来时,Layout.Mobile.chtml没有被使用……这是开发模式,所以每次我仍然启动web服务器。。。。我读到了一个与缓存相关的类似问题……但我不认为这与我的问题有什么关系,因为一旦web服务器关闭,缓存就会被清除

我使用Visual Studio 2012作为我的开发“web服务器”

一切都在运行,我不知道问题出在哪里,也不知道下一步该怎么办。任何关于如何诊断此问题或在何处查找的建议都将不胜感激

这只适用于Layout.Mobile.cshtml…当我切换回Layout.cshtml时,它被称为fine

在my 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";
}
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>&copy; @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")  &copy; @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软件包。。。。