2013-01-23 104 views
3

我正在與一個MVC4 web應用程序有3個點 - 桌面,手機和平板電腦。改變基於設備的控制器

我已經設置了顯示模式,因此視圖根據訪問該站點的設備而變化。我也在使用媒體查詢和jQuery手機來協助移動網站的開發。

當通過電話訪問站點時,向最終用戶顯示的數據庫存儲數據較少。出於這個原因,手機上的控制器不需要大量處理。

當消費應用程序是手機時,是否有任何優雅的方式來改變所使用的控制器或操作方法?我希望URL保持不變,也不要在控制器的設備操作方法中進行檢查。

任何方式來做到上述?

回答

1

例張貼在這裏:

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

上的用戶重定向到使用過濾器屬性,你的MVC項目的移動領域。

最好的我可以找到,我知道你說你不想更改網址..所以也許你可以寫一個過濾器屬性應用到你的控制器..所以一個動作被忽略?

這樣的事情可能(未經測試),但它的討厭,因爲它必須經常保持,真的只是注入更多的代碼到你的行動管道,可以感覺有點「魔力」,親自我會去使用單獨的區域或許:

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"); 
     } 
    } 
}