2

尝试设置移动频道以在 EPiServer 7 的编辑模式下使用。

一直关注这个链接

http://world.episerver.com/Documentation/Items/Developers-Guide/EPiServer-CMS/7/Content/Display-Channels/

创建了一个初始化模块

[InitializableModule]
[ModuleDependency(typeof(EPiServer.Web.InitializationModule))]
public class DisplayModesInitialization : IInitializableModule
{
    public void Initialize(InitializationEngine context)
    {
        if (context.HostType == HostType.WebApplication)
        {
            System.Web.WebPages.DisplayModeProvider.Instance.Modes.RemoveAt(0);
            context.Locate.DisplayChannelService()
                                .RegisterDisplayMode(new DefaultDisplayMode(RenderingTags.Mobile)
                                {
                                    ContextCondition = (r) => r.Request.Browser.IsMobileDevice
                                });                
        }
    }

    public void Preload(string[] parameters) { }

    public void Uninitialize(EPiServer.Framework.Initialization.InitializationEngine context) { }
}

如您所见,我尝试删除现有的“移动”显示模式,以替换为通过 EPiServer DisplayChannelService() 创建的模式。

只是浏览到主页就可以了,但是当我强制 userAgent 成为移动浏览器时,它确实击中了正确的视图......即Index.mobile.cshtml

然而,它似乎仍在寻找,_Layout.cshtml而不是,_Layout.mobile.cshtml甚至在它未能找到它。

The file "~/Views/Shared/_Layout.cshtml" could not be rendered, because it does not exist or is not a valid page.

任何人都可以IDisplayMode通过EPiServer DisplayChannelService

另外,如果我在移动视图中明确设置布局

@{
    Layout = "~/Views/Shared/_Layout.mobile.cshtml";
}

如果还找不到呢?

The file "~/Views/Shared/_Layout.mobile.cshtml" could not be rendered, because it does not exist or is not a valid page.

_Layout 和 _Layout.mobile 都存在于那个位置吗?

4

1 回答 1

1

设法让它工作。

发现 _ViewStart.cshtml 有以下设置:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    DisplayModeProvider.Instance.RequireConsistentDisplayMode = true; 
} 

所以我删除了DisplayModeProvider.Instance.RequireConsistentDisplayMode = true;它,它现在可以工作了。

不知道为什么这会导致问题,因为主页既有移动视图也有桌面视图,还有移动和桌面布局?

于 2013-05-24T18:55:58.467 回答