【问题标题】:Disable aspnet.friendlyurl's mobile redirect for tablets为平板电脑禁用 aspnet.friendlyurl 的移动重定向
【发布时间】:2014-05-29 15:36:49
【问题描述】:

我的网站使用 Twitter Bootstrap 进行响应,并且桌面页面专为平板电脑和台式机设计。 aspnet.friendlyUrls 将平板设备视为移动设备并将它们发送到“.Mobile.aspx”等效项。如何禁用此行为并将平板电脑保留在桌面页面上?

2 周后,仍然没有遮阳篷,甚至没有评论?我是唯一一个实际使用 aspnet.FriendlyUrls 的人,即使它默认分布在新的 VS2013 Asp.Net 项目中?

【问题讨论】:

    标签: asp.net mobile tablet


    【解决方案1】:

    没有设置可以关闭此功能,但您可以通过删除 Site.Mobile.Master 和 ViewSwitcher 文件来禁用此功能

    不再需要以下文件:

    Site.Mobile.Master
    - Site.Mobile.Master.cs
    - Site.Mobile.Master.designer.cs

    ViewSwitcher
    - ViewSwitcher.cs
    - ViewSwitcher.ascx.cs

    感谢@fortboise 简化了我的回答

    【讨论】:

    • 不应该在 Site.Mobile.Master 而不是 Site. Master.cs?
    • @ChunLin 那也是我找到它的地方。我进去并相应地更新了答案。
    • 此解决方案在我的情况下(使用 Visual Studio 社区 2015)在评论和替换提到的行时不起作用,该解决方案不断为移动设备加载 Site.Mobile.Master ...任何建议或忘记的步骤?
    • @PedroEmilioBorregoRached 你也可以尝试删除 Site.Mobile.Master 和 ViewSwitcher 文件吗?您不需要这些文件,因为无论如何您都不想要移动设备的不同母版页。
    • 从上到下遵循您的答案,评论的初步结果,您描述为“可选”的问题已解决。逐步测试,我发现实现“只使用一个模板,不要切换”的方法是删除 Site.Mobile.Master(及其 .cs 和设计器文件)。那 - 只是那个 - 似乎是解决方案。 ViewSwitcher 也可以使用,因为它是孤立的(除非您在 Site.Master 中提供了 switch BACK)。 (最初的问题似乎有误:FriendlyUrls 不是变体用户代理的切换模板。)
    【解决方案2】:

    删除不会解决问题,方法是覆盖 TrySetMobileMasterPage。

    第一步:创建一个类

    public class MyWebFormsFriendlyUrlResolver : Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver
    {
    protected override bool TrySetMobileMasterPage(HttpContextBase httpContext, Page page, String mobileSuffix)
    {
        if (mobileSuffix == "Mobile")
        {
            return false;
        }
        else
        {
            return base.TrySetMobileMasterPage(httpContext, page, mobileSuffix);
        }
    }
    

    }

    进入 App_Start/RouteConfig 并设置后:

    public static void RegisterRoutes(RouteCollection routes)
        {
            var settings = new FriendlyUrlSettings();
            settings.AutoRedirectMode = RedirectMode.Permanent;
            routes.EnableFriendlyUrls(settings, new MyWebFormsFriendlyUrlResolver());
        } 
    

    【讨论】:

    • 第 1 步是删除 Site.Mobile.Master 文件和 ViewSwitcher 文件。第 2 步是在 Visual Studio 的发布设置中的文件发布选项中检查“删除目标位置的其他文件”。
    • 请注意,此代码允许我在标记中的页面级别确定母版页,而不是由基于设备的路由代码确定。谢谢,这很棒。
    • 谢谢你。我一直在努力解决这个问题。我可以理解它的用途,但如果你知道 css,这个功能有点毫无意义。我确实喜欢友好的网址,使网址更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多