MVC3 Razor - 有没有办法根据浏览器请求更改布局?

时间:2010-11-29 12:58:54

标签: asp.net-mvc razor

我成功地遵循了本教程:http://www.hanselman.com/blog/MixMobileWebSitesWithASPNETMVCAndTheMobileBrowserDefinitionFile.aspx

当我使用移动设备访问页面时,所有视图都成功呈现。但是,它们的布局错误(AKA主页)。

我有以下结构: /Views/Shared/Mobile/_Layout.cshtml /Views/Shared/_Layout.cshtml

问题是,我必须在每个视图中添加以下语句:

Layout = "~/Views/Shared/Mobile/_Layout.cshtml";

是否有可以放置逻辑以在另一个布局上渲染一个布局的地方?

if(normalAccess)呈现正常的_Layout.cshtml else(mobileAccess)渲染/Mobile/_Layout.cshtml

我找不到。

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx

上有一篇好文章

您可以在\ Views文件夹中创建一个名为_ViewStart.cshtml的文件,您可以在其中放置所有视图使用的布局逻辑

示例_ViewStart.cshtml只是:

@{
    Layout = "~/Views/Shared/SiteLayout.cshtml";
}

文章还指出:'因为_ViewStart.cshtml允许我们编写代码,所以我们可以选择使布局选择逻辑比基本属性集更丰富。例如:我们可以改变我们使用的布局模板,具体取决于访问网站的设备类型 - 并为这些设备提供手机或平板电脑优化布局,以及针对PC /笔记本电脑的桌面优化布局。'

你可能需要花些时间来解决这个问题,但是我没有2010安装方便试试这个。