如果可以,请使用 Darin Dimitrov 指出的 ASP MVC 4。它开箱即用地支持这一点。
如果您卡在 MVC 3 上,以下是我们在产品中的做法:
1) 安装 WURFL
2) 实现一个调用 WURFL 并解析设备能力的 HttpCapabilitiesProvider;东西解决了结果。一定要添加一个名为 isMobileBrowser 的属性(wurfl 公开了这个)
3) 告诉 .NET 使用您的功能提供程序而不是默认的 HttpCapabilitiesBase.BrowserCapabilitiesProvider = new YourBrowserCapabilitiesProvider(_wurflManager);
4)创建一个CustomViewEngine(继承RazorViewEngine)。覆盖 FindPartialView 和 FindView。这些应该查看 controllerContext.RequestContext.HttpContext.Request.Browser.Capabilities["isMobileBrowser"] 并映射到适当的名称,例如 myView.cshtml.mobile。您需要同时解析 viewName 和 masterName。
4.1) 还在CustomViewEngine的FindPartialView & FindView中,搜索搜索~/Views/{0}/{1}和~/Views/Shared/{0}/{1},其中{0}是控制器(controllerContext.RouteData.GetRequiredString( "controller")) 和 {1} 是您的映射视图名称
4.2) Return return new ViewEngineResult(CreateView(controllerContext, viewPath, masterPath), this);