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

Ism*_*ael 4 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";
Run Code Online (Sandbox Code Playgroud)

有没有我可以将逻辑放在另一个布局上的地方?

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

我找不到哪里.

谢谢你的帮助.

Pat*_*ald 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";
}
Run Code Online (Sandbox Code Playgroud)

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

你可能需要花一些时间才能完成这项工作,但我没有一个2010安装方便的尝试.