3

デスクトップ、電話、タブレットの 3 つのスナップ ポイントを持つ MVC4 Web アプリケーションを使用しています。

サイトにアクセスするデバイスによって表示が異なるように表示モードを設定しました。サイトのモバイル開発を支援するために、メディア クエリと jquery モバイルも使用しています。

サイトが電話からアクセスされている場合、データベースに保存されたデータがエンド ユーザーに表示されることは少なくなります。このため、コントローラーの負荷の高い処理は電話には必要ありません。

使用するアプリケーションが電話の場合、使用するコントローラーまたはアクション メソッドを変更する洗練された方法はありますか? URLを同じままにして、デバイスのコントローラーアクションメソッド内でチェックしないようにしたいと思います。

上記を行う方法はありますか?

4

1 に答える 1

1

ここに投稿例:

http://weblogs.asp.net/shijuvarghese/archive/2011/02/25/mobile-enabled-web-apps-with-asp-net-mvc-3-and-jquery-mobile.aspx

フィルタ属性を使用して、MVCプロジェクトのモバイルエリアにユーザーをリダイレクトする場合。

私が見つけることができる最善のことですが、URLを変更したくないと言っていたので、コントローラーに適用するフィルター属性を記述して、アクションが無視されるようにすることができますか?

このようなものはおそらく(テストされていません)、常に維持する必要があり、実際には少し「魔法」を感じることができるアクションパイプラインにさらに多くのコードを注入しているため、厄介です。個人的には、別の領域を使用することになります。

public class MobileDeviceAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Request.Browser.IsMobileDevice)
        {
            if (filterContext.ActionDescriptor.ActionName == "foo")
                filterContext.HttpContext.Response.RedirectToRoute("bar");
        }
    }
}
于 2013-01-24T02:08:06.750 に答える