ASP.NET MVC と razor ビューで開発されたオープン ソースの ASP.NET MVC ( nopcommerce ) または nopcommerce.com があります。たとえば、index.cshtml と Index.Mobile.cshtml がありますが、私はデスクトップとモバイルの両方のバージョンです。モバイル視聴の経験がなく、
Chrome や IE などのブラウザでモバイル ページを表示する方法について誰かが手がかりを提供してくれれば、非常にありがたいです。
ASP.NET MVC と razor ビューで開発されたオープン ソースの ASP.NET MVC ( nopcommerce ) または nopcommerce.com があります。たとえば、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 などの便利な機能がたくさんありますが、ほとんどは問題なく動作しますが、これらのヘルパーに依存する前にテストします。