c# – 如何获取当前的显示模式在mvc4中是移动的

我正在开发移动Web应用程序.我需要得到当前的显示模式是在控制器中移动.

我的问题是:我有2个部分视图

/Views/Shared/ListItem.cshtml
/Views/Shared/ListItem.mobile.cshtml

当使用PartialView(“ListItem”)这是正确的工作.但是我需要将部分浏览放在子文件夹中

/Views/Shared/Modules/Post/ListItem.cshtml
/Views/Shared/Modules/Post/ListItem.mobile.cshtml

当我使用PartialView(“〜/ Views / Shared / Modules / Post / ListItem.cshtml”)这个工作在桌面上.当displaymode是移动的,ListItem.mobile.cshtml不显示.

我的选择是

if( CurrentdisplayMode==Mobile){
  PartialView("~/Views/Shared/Modules/Post/ListItem.mobile.cshtml");
else
  PartialView("~/Views/Shared/Modules/Post/ListItem.cshtml");

如何获取CurrentdisplayMode?
如何解决这个问题?

解决方法

我还需要访问当前的显示模式,所以我可以调整传递给视图的视图模型(在移动视图中更少的信息,因此它可以从较小的视图模型显示).

ControllerContext.displayMode不能使用,因为它将在操作执行后设置.

因此,您必须根据上下文(用户代理,cookie,屏幕大小等)确定显示模式.

这是一个nice trick I found on the ASP.NEt forums,它将让您使用与以后被框架使用的相同的逻辑来确定显示模式:

public string GetdisplayModeId()
{
    foreach (var mode in displayModeProvider.Instance.Modes)
        if (mode.CanHandleContext(HttpContext))
            return mode.displayModeId;

    throw new Exception("No display mode Could be found for the current context.");
}

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...