我建议看看这个博客文章(如果你不想/不能使用MVC 4):http://brockallen.com/2012/05/24/mobile-support-in-mvc-3/。
Brock Allen解释了如何通过使用动作过滤器来获得在MVC 3中工作的移动/非移动功能。
基本上你创建下面的类(假设你是使用C#编写):
public class MobileAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
// is the request a view and is the client device a mobile device
var vr = filterContext.Result as ViewResult;
if (vr != null &&
filterContext.HttpContext.Request.Browser.IsMobileDevice)
{
// determine from the current view what the mobile view name would be
var viewName = vr.ViewName;
if (String.IsNullOrWhiteSpace(viewName)) viewName = (string)filterContext.RouteData.Values["action"];
var fileExtension = Path.GetExtension(viewName);
var mobileViewName = Path.ChangeExtension(viewName, "Mobile" + fileExtension);
// ask MVC is we have that view
var ver = ViewEngines.Engines.FindView(filterContext, mobileViewName, vr.MasterName);
if (ver != null && ver.View != null)
{
ver.ViewEngine.ReleaseView(filterContext, ver.View);
// we do, so tell MVC to use the mobile view instead
vr.ViewName = mobileViewName;
}
}
}
}
事后你只需添加[Mobile]
到所有的控制器,还拥有移动视图:
[Mobile]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
现在您可以分别查看电脑和移动设备:
计算机:Views/Home/Index.cshtml
手机:Views/Home/Index.Mobile.cshtml
而这一切,你必须做的。现在,MVC将自动向移动设备显示Index.Mobile.cshtml
,并向计算机自动显示Index.cshtml
。
目前这不会对您有所帮助,但是它会让您兴奋不已:) http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-4-mobile-features – Curt 2012-03-30 09:33:21
你有没有考虑从Asp.Net MVC 4开始?通过能够为移动设备(实际上是任何设备)定义替代视图,显着帮助开发桌面和移动设备。确定它是测试版,但我敢打赌它会在你完成时发布 – 2012-03-30 09:33:51
是的,我正在阅读如何切换布局,听起来很棒。需要考虑的事情。感谢您输入Curt/Andras。 – TBD 2012-03-30 11:04:06