好的,我已经使用自定义视图引擎继承了此代码。它只是覆盖FindView
,以便根据设备返回不同的视图。目前,iPad被检测为移动设备,因此显示移动视图。我的任务是将其更改为桌面视图。
有两个母版页X.master
和X.Mobile.master
。从代码中,您可以看到它手动将.Mobile
添加到移动设备的母版页名称中。我所做的就是为iPad设置isMobile
到false
。
问题在于,即使它转到其他语句masterName
为X
(而不是X.Mobile
),在使用iPad查看时,返回的视图也会{{ 1}}作为主页面。因此,对于iPad,它最终会显示带有移动主页的桌面视图。桌面和移动版本都很好。这可能发生在何处(以及如何)?
示例操作方法:
X.Mobile.Master
这是viewengine的简化版本:
public ActionResult Index()
{
return View("Index", "X");
}
答案 0 :(得分:2)
好的,看完ASP.NET MVC(感谢上帝的开源)后,我可以看到当请求被标记为mobile(controllerContext.HttpContext.Request.Browser.IsMobileDevice == true
)时,MVC会尝试viewname.mobile.cshtml(或.aspx) )在尝试viewname.cshtml之前默认情况下。对于母版页也是如此。
在我的情况下,因为确实有一个masterpage.mobile,它正在呈现。至于视图,因为移动版本位于一个单独的文件夹中,所以它没有被拾取,而是回到正常的viewname.cshtml。
这整个调查让我有点兴奋,这促使我在my blog更详细地分享我的发现。