0

モバイル デバイスとデスクトップ デバイスの両方に MVC 4 インターネット アプリケーション プロジェクトを作成しました。ここで、モバイル サイトをすべてのブラウザーに対してグローバルに表示したいと考えています。

コードHttpContext.SetOverriddenBrowser(BrowserOverride.Mobile)を使用してこれを実行しようとしましたが、どこに置いても正しく動作しないようです。

現在、ViewSwitcher を使用してデスクトップ サイトからモバイル サイトに切り替えることができますが、デスクトップ サイトがまだ機能していないため、これは実用的ではありません。

public RedirectResult SwitchView(bool mobile, string returnUrl) {
    if (Request.Browser.IsMobileDevice == mobile)
        HttpContext.ClearOverriddenBrowser();
    else
        HttpContext.SetOverriddenBrowser(mobile ? BrowserOverride.Mobile : BrowserOverride.Desktop);

    return Redirect(returnUrl);
}

モバイル ビューはすべて VIEWNAME.Mobile.cshtml 形式です。どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

4

私はパーティーに少し遅れているかもしれませんが、OPと同じ問題があり、Tiesonのソリューションが好きではありませんでした. そこで、私にとって非常にうまく機能する代替案を思いつきました。

次のコードをプロジェクトGlobal.asax.csに追加します。

protected void Application_BeginRequest()
{
    Request.RequestContext.HttpContext.SetOverriddenBrowser(BrowserOverride.Mobile);
}

これにより、すべての要求で、それがモバイル ブラウザーの要求であることをASP.NET に伝えます。

于 2013-09-05T12:26:14.793 に答える
0

コントローラー アクションから結果を返すときに、モバイル ビューを手動で指定するという別の方法を試してみるとよいでしょう。View()かなりの数のオーバーロードがあり ( http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.view%28v=vs.100%29.aspxを参照)、そのうちの 1 つを指定できますレンダリングするビュー:動作するreturn View("index.mobile", model)はずです。アプリの残りの部分が完成したら、単純な検索 + 置換で「ハック」を削除できます。

于 2013-04-24T22:14:04.720 に答える