zoukankan      html  css  js  c++  java
  • MVC3下的layout页面

    1.Layout页基础:
    如果你有使用MasterPage的经验,你将会记得如下的几个东西

    A:<%@ Master %>

    B:<%@ Page %>

    C:<asp:ContentPlaceHolder />

    D:<asp:Content />

    但是在Layout中,以上的这些东西将会消失.(作者不排除有WebPages和WebForms兼容工作的可能性)

    取而代之的新功能是:

    A.Layout属性:等同于原来的MasterPageFile属性.

    B.@RenderBody()方法:直接渲染整个View到占位符处,而不需要原来所使用的<asp:Content />.

    C.@RenderPage()方法:渲染指定的页面到占位符处.

    D.@RenderSection方法:声明一个占位符,和原来的<asp:ContentPlaceHolder />功能类似.

    E.@section标记:对@RenderSection方法声明的占位符进行实现,和原来的<asp:Content />功能类似.

    2.实践:

    Layout页面作用类似于之前WebForm模板页(MasterPage)的作用,起到页面重用、统一界面风格的作用。

    首先,我们新建一个MVC3项目,_Layout.cshtm自动生成,l默认位于Web/Views/Shared/。新建个_MyLayout.cshtml.

    如果有页面想套用公用的模板页,只需在页面的开头写@Layout = filePath;即可,如页面Index.cshtml

     1 @{
     2     //Layout = null;    
     3     Layout = "~/Views/Shared/_MyLayout.cshtml";
     4 }
     5 @{
     6     ViewBag.Title = "Home Page";
     7 }
     8 
     9 <h2>@ViewBag.Message</h2>
    10 <p>
    11     To learn more about ASP.NET MVC visit 
    12     <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
    13 </p>

    假设公用模板页的内容为:

     1 <!DOCTYPE html>
     2 
     3 <html>
     4 <head>
     5     <title>@ViewBag.Title</title>
     6 </head>
     7 <body>
     8     这是_MyLayout........
     9     <div>
    10         开始呈现调用本模板页的页面原始内容。。。<br />
    11         @RenderBody()  
    12         <br /> 
    13         结束呈现调用本模板页的页面原始内容。。。<br />
    14     </div>
    15     再随便写写~~
    16 
    17     @* @RenderBody();错误,一页智能呈现一次 *@
    18     <div>
    19         @*RenderPage()可以呈现多次*@
    20         @RenderPage("~/Views/Shared/Error.cshtml")
    21         @RenderPage("~/Views/Shared/Error.cshtml")
    22     </div>
    23 </body>
    24 </html>

    显示的结果如下:

    1.如果在首页上不写明@Layout = filePath;

    则MVC3自动在本文件夹下寻找_ViewStart.cshtml(里面定义了默认的模板页),使用_ViewStart.cshtml里的模板页设置。如果在本文件夹下找不到,则到上层文件夹下寻找,直到找到_ViewStart.cshtml后使用。如果最终没有找到_ViewStart.cshtml,那么当然,就不用模板页啦!

    2.如果在首页上写明@Layout = null;则该页面没有模板页。

    链接:http://www.cnblogs.com/highend/archive/2011/04/18/asp_net_mvc3_layout.html(推荐,有图有真相)

  • 相关阅读:
    git问题记录
    @Slf4j注解
    idea修改maven项目名
    spring的定时任务schedule
    @RequestParam详解
    统一全局异常处理将出错的栈信息打印到日志中
    python交互环境中导入文件中自定义的函数报错
    关于服务器的小技巧
    Python学习
    前后端分离时,获取不到session
  • 原文地址:https://www.cnblogs.com/nlh774/p/3561097.html
Copyright © 2011-2022 走看看