【问题标题】:ASP.NET MVC web application loading the wrong shared layoutASP.NET MVC Web 应用程序加载错误的共享布局
【发布时间】:2021-08-03 08:18:54
【问题描述】:

我正在创建一个基于 Visual Studio 模板的 ASP.NET MVC Web 应用程序,其中包含 2 个共享布局,1 个用于后台 - _Layout.cshtml - 另一个用于移动 Web 应用程序 - _Layout.Mobile.cshtml

问题是当我在 Chrome 中加载后台主页时,它会加载 _Layout.cshtml 文件,但当我激活移动设备模拟器时,它会加载 _Layout.Mobile.cshtml 文件。

在移动设备上也会发生同样的情况,如果我转到家庭控制器的默认索引视图,它会加载 _Layout.Mobile.cshtml 文件。

我尝试调试,但没有找到系统更改为_Layout.Mobile.cshtml的地方。

我发现避免这种情况的唯一方法是将_Layout.Mobile.cshtml 重命名为__Layout.Mobile.cshtml,然后正确加载_Layout.cshtml

我真的不知道从哪里开始寻找问题。

【问题讨论】:

    标签: c# asp.net-mvc visual-studio


    【解决方案1】:

    如果Request.Browser.IsMobileDevice = true,任何带有.Mobile 扩展名的视图都会被自动使用

    发现于:https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/aspnet-mvc-4-mobile-features

    ASP.NET MVC 4 中一个重要的新特性是一个简单的机制, 允许您覆盖任何视图(包括布局和部分视图) 一般的移动浏览器,对于单个移动浏览器,或 任何特定的浏览器。要提供特定于移动设备的视图,您可以复制 查看文件并将 .Mobile 添加到文件名中。例如,要创建一个 移动索引视图,将 Views\Home\Index.cshtml 复制到 视图\主页\Index.Mobile.cshtml。

    【讨论】:

    • 谢谢!为移动视图的布局命名为 _Layout.Mobile.cshtml 真是巧合。
    • 知道的人,知道的人;)(阿根廷表达)
    • 这里在葡萄牙是“Quem sabe,sabe!” - 基本上是一样的:)
    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2016-12-23
    相关资源
    最近更新 更多