我有一个开源 ASP.NET MVC( nopcommerce ) 或 nopcommerce.com 它是在 ASP.NET MVC 和 razor 视图中开发的,它是桌面版和移动版,例如它有 index.cshtml 和 Index.Mobile.cshtml 但我没有手机观看经验,
如果有人提供有关如何在 Chrome 和 IE 等浏览器上查看移动页面的线索,我将不胜感激。
我有一个开源 ASP.NET MVC( nopcommerce ) 或 nopcommerce.com 它是在 ASP.NET MVC 和 razor 视图中开发的,它是桌面版和移动版,例如它有 index.cshtml 和 Index.Mobile.cshtml 但我没有手机观看经验,
如果有人提供有关如何在 Chrome 和 IE 等浏览器上查看移动页面的线索,我将不胜感激。
根据您可能需要的站点如何进行移动检测:
在 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、..大多数都可以正常工作,但我会在依赖它们之前测试这些助手。