2

ユーザーがモバイル デバイスからサイトにアクセスしているかどうかに基づいて、レイアウトを動的に変更したいと考えています。この件についていくつか質問があります。

  1. レイアウトが決定したら、ビューがレンダリングされる前にレイアウトを変更したいと思います。つまり、ネストされたレイアウトが存在する可能性がある場合は、「再帰的layout.cshtmlに」変更できるフックがいくつかあります。layout.mobile.cshtml

    RazorViewEngineCreateViewメソッドをオーバーライドするだけで十分ですか? パラメータを取るmasterPathので、カスタムを実装してRazorViewEngineこのメ​​ソッドをオーバーライドすることもできますよね?

  2. 2 番目の質問は、モバイル ブラウザーの検出に関するものです。特定のデバイスについてはあまり気にしません。デスクトップとモバイルを区別したいだけです。WURFLこの場合、必需品のようなものはありますか?

    ばかげたようなものRequest.Browser.ScreenPixelsWidthをチェックしていますか?ScreenPixelsHeigth(私が変更するほとんどは使用するかどうかでありjQuery.mobile、それはデータ属性です。

4

2 に答える 2

1

この機能はASP.NETMVC4に組み込まれているため、すぐに使用できます。

Scott Hanslemanは、ASP.NET MVC 3で同じことを実現し、アップグレードの準備をする方法についてブログに書いています。彼が提案したNuGetはASP.NETMVC4と仕様互換であるためです

于 2012-05-08T17:35:33.420 に答える
0

可能であれば、Darin Dimitrov が指摘したように ASP MVC 4 を使用してください。これはすぐに使用できます。

MVC 3 に行き詰まっている場合は、次のように私たちの製品でそれを行います。

1) WURFL をインストールする

2) WURFL を呼び出してデバイス機能を解決する HttpCapabilitiesProvider を実装します。解決されたキャップを結果に詰め込みます。isMobileBrowser というプロパティを必ず追加してください (wurfl はこれを公開します)。

3) デフォルトの HttpCapabilitiesBase.BrowserCapabilitiesProvider = new YourBrowserCapabilitiesProvider(_wurflManager); の代わりに機能プロバイダーを使用するように .NET に指示します。

4) CustomViewEngine を作成します (RazorViewEngine を継承します)。FindPartialView と FindView をオーバーライドします。これらは、controllerContext.RequestContext.HttpContext.Request.Browser.Capabilities["isMobileBrowser"] を見て、適切な名前 (myView.cshtml.mobile など) にマップする必要があります。viewName と masterName の両方を解決する必要があります。

4.1) 引き続き CustomViewEngine の FindPartialView & FindView で、検索検索 ~/Views/{0}/{1} および ~/Views/Shared/{0}/{1} ここで、{0} はコントローラー (controllerContext.RouteData.GetRequiredString( "controller")) であり、{1} はマップされたビューの名前です

4.2) return return new ViewEngineResult(CreateView(controllerContext, viewPath, masterPath), this);

于 2012-05-09T01:12:50.890 に答える