ScottGu:通过Razor实现布局方法

介绍如何通过Razor使整个网站的布局变得简单。

  • 项目的\Views\Shared文件夹是通用视图文件、模版所放置的地方
  • 在布局文件中需要调用@RenderBody()方法
  • 在布局文件中需要用<title>@ViewBag.Title</title>输出Html的Title属性

  

     · 我们不需要将我们的主体内容包装在一个标记或元素中——Razor将默认自动将Index.cshtml中的内容视为布局页面的主体部分。如果我们的布局有几个可更换的区域,我们能选择性地定义“name sections”。但是Razor让90%的情况(你只需要有一个主体部分就可以了)超级干净而简练。

     · 上面我们编程设置了Index.cshtml页面中的View.Title的值。我们的Index.cshtml文件中的代码会比SiteLayout.cshtml中的代码先执行——这样我们就能编写视图代码编程设置需要被呈示到布局的值。对像设置页面的标题,和为搜索引擎优化内的<head>设置<meta>元素这样的事情,上面功能尤其有用。

     · 刚才我们在Index.cshtml页面内编程设置所用的布局模板。它也可以通过设置视图上的布局属性来实现(注意:在第一个预览版中,这个属性被称为“LayoutPage”——我们在ASP.NET MVC 3 Beta版中将其更名为“Layout”)。我将简单地介绍设置这个属性的几个替代方法。

      设置布局文件的方法:

      1.通过设置视图上的布局属性来实现:

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

      2.通过_ViewStart.cshtml文件一次性定义网站内所有视图的布局逻辑。

         _ViewStart.cshtml文件位于项目的\Views文件夹下,代码很简单:

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

      3.因为_ViewStart.cshtml允许我们编写代码,所以我们能有选择地让我们的布局IC交易网选择逻辑比基本的属性设置更丰富。比如:我们能根据访问网站的设备的不同来使用不同的布局模板——有针对手机或tablet等这些设备的优化布局,针对PCs/笔记本的桌面优化布局。或者如果我们创建一个被不同的用户使用的CMS系统或通用共享应用,我们能根据访问网站的客户(或角色)的不同而选择不同的布局。

      这大大提高了用户界面的灵活用。允许你更容易地一次性编写视图逻辑,避免在不同的地方重复它。

      注意:你也能在一个控制器或操作筛选器重指定布局。这样如果你更愿意保留布局逻辑在那里,你也能那样做。

       更多IC交易网高级内容

      人们经常问两个常见问题:

      1) 我能使用嵌套的布局文件吗?

      2) 在一个布局文件中,我们有多个非连续的可替换区域吗?——这样我就能在几处不同的地方填充我自己的视图文件。

      这两个问题的答案都是肯定的!

posted @ 2011-06-25 21:09  codess  阅读(306)  评论(0编辑  收藏  举报