我正在开发移动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");
解决方法
我还需要访问当前的显示模式,所以我可以调整传递给视图的视图模型(在移动视图中更少的信息,因此它可以从较小的视图模型显示).
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."); }
原文地址:https://www.jb51.cc/csharp/96971.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。