在MVC应用程序中全局设置布局的位置

Vin*_*mar 2 asp.net-mvc asp.net-mvc-4

我需要在我的MVC应用程序中实现母版页asp.net概念,当我用Google搜索时,我可以理解可以通过使用MVC中的布局来获得相同的内容。
我的应用程序的〜Views \ Shared_Layout.cshtml下有_Layout文件。
为了将内容包含在我的员工详细信息页面的布局文件中,我添加了以下内容:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    ViewBag.Title = "DisplayEmployeeList";
}
Run Code Online (Sandbox Code Playgroud)

我想知道,是否要在所有页面中单独重复上面的代码,还是可以在全局某处重复执行,以便在所有页面上都可以看到它。

Mar*_*rco 5

不可以,您可以一次为所有页面设置它。

在您的Views文件夹中,应该有一个 _ViewStart.cshtml

只需参考_Layout.cshtml即可,您的所有视图都将从此继承。

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

Scott Guthrie的进一步解释:http : //weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx

并直接从asp.net: http://www.asp.net/whitepapers/add-mobile-pages-to-your-aspnet-web-forms-mvc-application

/编辑:

如果要为ViewStart带来一些逻辑,则可以(例如)检查请求是否来自移动设备,并因此使用其他布局:

@{
    if (Request.Browser.IsMobileDevice)
    {
        Layout = "~/Views/Shared/_MobileLayout.cshtml";
    }
    else
    {
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
}
Run Code Online (Sandbox Code Playgroud)