我正在使用一个MVC4网络应用程序,它有3个快照点 - 桌面,手机和平板电脑。
我已设置显示模式,因此视图会因访问网站的设备而异。我还使用媒体查询和jquery mobile来协助移动开发网站。
当从手机访问网站时,向最终用户显示的数据库存储数据较少。因此,手机不需要对控制器进行繁重的处理。
当消费应用程序是手机时,是否有任何优雅的方式来改变使用的控制器或动作方法?我希望网址保持不变,也不要在设备的控制器操作方法中进行检查。
有什么方法可以做到吗?
答案 0 :(得分:1)
此处的帖子示例:
使用过滤器属性将用户重定向到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");
}
}
}