1

我有一个开源 ASP.NET MVC( nopcommerce ) 或 nopcommerce.com 它是在 ASP.NET MVC 和 razor 视图中开发的,它是桌面版和移动版,例如它有 index.cshtml 和 Index.Mobile.cshtml 但我没有手机观看经验,

如果有人提供有关如何在 Chrome 和 IE 等浏览器上查看移动页面的线索,我将不胜感激。

4

2 回答 2

1

根据您可能需要的站点如何进行移动检测:

  • 调整来自浏览器的“用户代理”字符串。有很多工具/插件可以做到这一点。
  • 设置某种饼干
  • 看看网站是否直接支持“使用移动视图”(即http://www.xbox.com在底部有这样的链接)。
于 2013-07-22T21:19:12.107 回答
1

在 MVC 中,您将声明显示模式

例如,在上面的链接中,他们声明了一个名为 WP 的模式,要访问该模式,您将拥有一个index.cshtml(正常模式)和一个index.wp.cshtml(检测到的模式)

一旦你明白了,你可以通过测试你喜欢的任何东西来设置你喜欢的所有模式

例如我的 /APP_Start/DisplayModeConfig.cs

public class DisplayModeConfig
{
    public static void RegisterDisplayModes(DisplayModeProvider provider)
    {
        // INFO: Allows to name views/partials/masters like viewname.iphone.cshtml, and MVC will choose this automatically

        // INFO: Lets remove the default "Mobile" mode, since it's pretty useless
        var mobileDefault = DisplayModeProvider.Instance.Modes.First(m => m.DisplayModeId == "Mobile");
        if (mobileDefault != null)
        {
            DisplayModeProvider.Instance.Modes.Remove(mobileDefault);
        }

        // INFO: Now add one that actually works
        provider.Modes.Insert(0,
            new DefaultDisplayMode("Mobile")
            {
                ContextCondition = (context => (!string.IsNullOrEmpty(context.GetOverriddenUserAgent()) && Regex.IsMatch(context.GetOverriddenUserAgent(), @"mobile|android|kindle|silk|midp", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)))
            });


        // INFO: Order from least to most important (since we insert at position 0)
        provider.Modes.Insert(1,
            new DefaultDisplayMode("Win8")
            {
                ContextCondition = (context => (!string.IsNullOrEmpty(context.GetOverriddenUserAgent()) && context.GetOverriddenUserAgent().IndexOf("Windows NT 6.2", StringComparison.OrdinalIgnoreCase) >= 0))
            });
    }
}

您在@Request.Browser.* 中也有很多好东西,例如@Request.Browser.IsMobileDevice、@Request.Browser.Version、..大多数都可以正常工作,但我会在依赖它们之前测试这些助手。

于 2013-07-22T21:22:47.100 回答