创建自定义视图切换器作为 Mvc4 移动内置机制
本文关键字:Mvc4 移动 内置 机制 自定义 视图 切换器 创建 | 更新日期: 2023-09-27 18:31:19
是否可以像MVC4移动版那样创建自己的自定义"视图切换器"?
例如:
如果我将视图名称更改为"_Layout.Mobile.cshtml",如果用户代理是移动设备.
,它将自动呈现视图。我想在一个项目中管理几个站点,所以我想允许配置(web.config)以相同的方式调用视图。
例如:
Account.Project1.cshtml(如果配置为项目 1)
Account.Project2.cshtml(如果配置为项目 2)
Account.Mobile.cshtml (如果从移动设备调用)
Account.Project1.Mobile.cshtml(如果从移动和项目 1 调用)
Account.cshtml (default)
我试图用谷歌搜索它,但我没有发现关于这个主题的任何问题。
谢谢。
您可以展开DefaultDisplayMode
:
public class MobileDisplay : DefaultDisplayMode
{
public MobileDisplay()
// postfix of the file
: base("mobile")
{
// create an expression if the current postfix is applicatble
ContextCondition = context => context.Request.Browser.IsMobileDevice;
}
}
您可以在应用程序开始中插入:
DisplayModeProvider.Instance.Modes.Insert(0, new MobileDisplay());
这就像路由和异常一样工作。第一场比赛获胜,这就是为什么我的示例将其插入索引 0 的原因。
布局不是由此选择的。您可以按 cshtml 文件或在_ViewStart.cshtml
文件中设置布局视图。当然,您只能在具体视图中设置移动布局,也可以根据逻辑在_ViewStart
中设置:
@{
if (Request.Browser.IsMobileDevice)
{
Layout = "Shared/_Layout.mobile.cshtml";
}
else
{
Layout = "Shared/_Layout.cshtml";
}
}