我正在使用具有 3 个快照点的 MVC4 Web 应用程序 - 台式机、手机和平板电脑。
我已经设置了显示模式,因此视图会根据访问站点的设备而有所不同。我还使用媒体查询和 jquery mobile 来协助网站的移动开发。
当通过电话访问该站点时,向最终用户显示的数据库存储数据较少。因此,手机不需要控制器上的繁重处理。
当消费应用程序是手机时,是否有任何优雅的方法来改变使用的控制器或操作方法?我希望 url 保持不变,也不要在设备的控制器操作方法中进行检查。
以上有什么办法吗?
我正在使用具有 3 个快照点的 MVC4 Web 应用程序 - 台式机、手机和平板电脑。
我已经设置了显示模式,因此视图会根据访问站点的设备而有所不同。我还使用媒体查询和 jquery mobile 来协助网站的移动开发。
当通过电话访问该站点时,向最终用户显示的数据库存储数据较少。因此,手机不需要控制器上的繁重处理。
当消费应用程序是手机时,是否有任何优雅的方法来改变使用的控制器或操作方法?我希望 url 保持不变,也不要在设备的控制器操作方法中进行检查。
以上有什么办法吗?
示例帖子在这里:
关于使用过滤器属性将用户重定向到 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");
}
}
}