0

是否可以像 MVC4 mobile 一样创建我自己的自定义“视图切换器”?

例如:
如果我将视图名称更改为“_Layout.Mobile.cshtml”,如果用户代理是移动设备,它将自动呈现视图。
我想在一个项目中管理几个站点,所以我想通过配置(web.config)允许以相同的方式调用视图。

例如:
Account.Project1.cshtml(如果配置为项目 1)
Account.Project2.cshtml(如果配置为项目 2)
Account.Mobile.cshtml(如果从手机调用)
Account.Project1.Mobile.cshtml(如果从手机调用)和项目1)
Account.cshtml(默认)

我试图用谷歌搜索它,但我没有发现任何关于这个主题的问题。

谢谢。

4

1 回答 1

1

您可以展开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";
  }
}
于 2013-09-15T17:52:23.747 回答