修改母版页的内容

修改母版页的内容。(原创:灰灰虫的家http://hi.baidu.com/grayworm)
当我们在运行不同的内容页面时,要求母版面的内容也会根据不同的内容页面发生不的变化时,如何做呢?比如,我们想让每个不同的内容页面都有一个自己的标题(窗口标题栏中的文字),但标题栏的内容是在母版页中指定的,那我们如何为该母版页下的每个页面设置不同的标题呢?
有两种途径来解决我们的这个问题:
第一种法是我们在<%@ Page %>声明指示符中为内容页面视图声明Title属性。比如我们想把Index页面的标题设为“Super Great Website”,那我们可以把Index页面的声明指示符做如下声明。
<%@ page title="Super Great Website" language="C#" masterpagefile="~/Views/Shared/Site.Master" autoeventwireup="true" codebehind="Index.aspx.cs" inherits="MvcApplication1.Views.Home.Index"%>
当Index视图运行呈现在浏览器中的时候,它的标题就会显示在标题栏中,如下图所示。


《图5》

这里有很重要的一点需要大家注意:要想让上面的声明指示符能够正确执行,那我们在母版页中必须以<head runat=”server”>替代传统的<head>标记,如果<head>标记中没有包含runat=”server”属性的话,那我们内容页面<%@ Page title="Super Great Website" %>的标题就不会显示出来,默认情况下,母版页中的<head>标记是带有runat=”server”这个属性的。
另一个方法是我们在母版页中把需要在内容页面中修改的部份预先定义成<asp:ContentPlaceHolder>标记。比如,我们想要在内容页面中修改母版页中的标题 和meta标记,那我们在母版页的<head>标记中加入一个<asp:ContentPlaceHolder>标记。代码如下图所示:
Listing 4 – Views/Shared/Site2.master
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site2.Master.cs" Inherits="MvcApplication1.Views.Shared.Site2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml" >
<head>     
  <asp:ContentPlaceHolder ID="head" runat="server">          
  <title>Please change my title</title>          
   <meta name="description" content="Please provide a description" />          
   <meta name="keywords" content="keyword1,keyword2" />     
   </asp:ContentPlaceHolder>
</head>
<body>     
   <div>          
   <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">          
   </asp:ContentPlaceHolder>     
   </div>
</body>
</html>
我们可以看到在上面的<asp:ContentPlaceHolder>标记中有默认的内容,如果我们在内容页面中不重写这个<asp:ContentPlaceHolder>标记,那当内容页面运行的时候会显示这些默认的内容。

下面的代码中,我们重写了母版页<head>标记中的<asp:ContentPlaceHolder>标记,并显示了自定义的标题和meta信息。
Listing 5 – Views/Home/Index2.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site2.Master" AutoEventWireup="true" CodeBehind="Index2.aspx.cs" Inherits="MvcApplication1.Views.Home.Index2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">     
<title>The Index2 Page</title>     
<meta name="description" content="Description of Index2 page" />     
<meta name="keywords" content="asp.net,mvc,cool,groovy" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">     
Just some content in the body of the page.
</asp:Content>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值