根据设备改变控制器

时间:2013-01-23 21:59:41

标签: asp.net-mvc mobile asp.net-mvc-4

我正在使用一个MVC4网络应用程序,它有3个快照点 - 桌面,手机和平板电脑。

我已设置显示模式,因此视图会因访问网站的设备而异。我还使用媒体查询和jquery mobile来协助移动开发网站。

当从手机访问网站时,向最终用户显示的数据库存储数据较少。因此,手机不需要对控制器进行繁重的处理。

当消费应用程序是手机时,是否有任何优雅的方式来改变使用的控制器或动作方法?我希望网址保持不变,也不要在设备的控制器操作方法中进行检查。

有什么方法可以做到吗?

1 个答案:

答案 0 :(得分: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");
        }
    }
}