母版页存在于Asp.Net Web窗体应用程序中,而在MVC应用程序中存在试图布局页。
母版页存在就一定要有内容页的存在,否则母版页的存在就没有了意义。
母版页提供整个框架,并利用
<asp:ContentPlaceHolder ID="ContentPlaceHolder1"runat="server">
</asp:ContentPlaceHolder>
为内容留出空隙。
创建使用母版页的内容视图,
内容页会自动生成,带有内容容器标签的id 和内容id相组合,使得,内容填写到相应的内容容器中去。
<asp:Content ID="Content1"ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2"ContentPlaceHolderID="ContentPlaceHolder1"runat="server">
</asp:Content>
在MVC中的布局页中使用@RenderBody代替ContentPlaceHolder1
- 布局页是MVC应用程序中最先启动的文件,虽然我们在Global.asax中定义了最先启动的页面
publicstatic void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id =UrlParameter.Optional } // 参数默认值
);
}
但这只是布局页中 @RenderBody()所指向的位置
- 那么最先启动的布局页在什么位置定义呢?
- 在Views文件夹下的_ViewStart.cshtml文件中定义。
@{
Layout ="~/Views/Shared/EasyUILayout.cshtml";
}
- 当布局页中的代码运行到 @RenderBody(),会自动显示Global.asax定义的起始页中的内容。
- 布局页中还可以使用
<div id="logindisplay">
@Html.Partial("_LogOnPartial")
</div>
添加另一个布局页中的内容。
- 布局页中显示内容的方式还有其他几种,详见博客:http://www.cnblogs.com/luluping/archive/2011/04/20/2021916.html
之前学了自定义控件,之后又学了母版页,现在又学了布局页,呵呵,有了一种永远也赶不上时尚的感觉。之后还有什么我需要学习的呢,呵呵,尽管来吧,我要抓住时尚,并引领时尚。