17

新しいASP.NETMVC4ベータ版を使用しており、ほとんどがレスポンシブデザインで動作するシステムを作成しようとしていますが、ある特定のビューでは、モバイルビューを使用してモバイルデバイスの特定のビューをレンダリングしています。

私の構造は、Show.cshtmlがあり、それに続いてShow.mobile.cshtmlがあるということです。

開発マシンからIISExpressを介してサイトを利用できるようにすると、このビューはiPad、iPhone、Android電話、およびモバイルOperaで正しく表示されます。また、開発マシンでIIS7.5にローカル公開した場合も同じように機能します。

問題は、ライブサーバーにデプロイするときに発生します。2つの異なるサーバーにデプロイしようとしました。その場合、モバイルビューはiPhoneにのみ提供され、他のモバイルデバイスには提供されません。これは一貫してそうです。セットアップされたサーバーは、Windows 2003/IIS6とWindows2008R2 / IIS7.5の両方であり、どちらでも同じように機能します。モバイルビューが提供されるのはiPhoneのみです。

これの原因は何でしょうか?

このためにglobal.asaxにカスタムを追加していません。

アップデート

さらに調査した結果、DisplayModeとモバイルビューのデフォルトの動作はRequest.Browser.IsMobileDeviceフラグに依存していることがわかりました。このフラグは、.NETFrameworkフォルダーのConfig/Browsersフォルダーにある.browserファイルに依存しているようです。

私の開発マシンには、デプロイ先のサーバーに存在するものとは異なる.browserファイルがあります。これまで、自分のマシンにあるものをWebアプリのApp_Browsersフォルダーにデプロイしようとしましたが、問題は解決しませんでした。これが進むべき道でしょうか?

4

2 に答える 2

6

これはあなたの質問に対する完全な答えではありませんが、それでも役立つと思います。

ASP.NETは、私の経験ではブラウザー機能を解決するのがあまり得意ではありません。だから、私は51Degrees.MobiFoundationを調べることをお勧めします。Steven Sandersonは、それに関する素晴らしいブログ投稿をしています。

51Degrees.Mobi Foundationを使用して、ASP.NETMVC3でモバイルブラウザーを正確に検出します

完全にはわかりませんが、これをASP.NET MVC4DisplayModeインフラストラクチャに簡単に接続できるはずです。これに関する優れたリソースは次のとおりです。

51Degrees.mobiおよびMVC4

于 2012-05-08T11:33:12.350 に答える
0

以下に示した解決策が答えだと思いましたが(少しの間は機能しました)、しばらくすると間違ったビューに切り替わりました。

インターネットの他の部分と同様に、Nugetから51度をインストールしました。 これは完全に機能しており、セットアップが非常に簡単です。


(以下は私には機能しませんが、おそらくあなたには機能します) http://www.nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes

既知のバグのようです:http ://aspnetwebstack.codeplex.com/workitem/280?PendingVoteId = 280

上記のcodeplexリンクによると、これを確認することを忘れないでください:

登録されたビューエンジンのリストをカスタマイズするプロジェクトの小さなセット(たとえば、Global.asax)の場合、コアランタイムバイナリで出荷されるクラス

于 2013-07-24T12:10:57.507 に答える