分享

利用母版页创建网站需要知道的几点

 悟静 2013-02-08

1、在创建大型的站点时,常需要创建多层的母版页。可以对母版页进行不限级的嵌套。

<%@ Master Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="SectionProducts.master.cs" Inherits="SectionProducts" %>
MasterPageFile 指定了母版页。

2、在母版页中使用图片和超链接。

 在母版页中使用url需要十分小心。根据使用的是html控件和asp.net控件,相对URL会有不同的解析方式。

如果使用ASP.NET控件,相对URL会解析为相对于母版页的URL。

如果使用HTML标签,情况就会完全不同。如果在<img>或<a>之类的HTML标签中使用相对URL,这个相对URL会解析为相对内容页的URL。

为解决html标签中的问题,可以使用asp.net控件或者使用绝对路径(不推荐)

3、在web配置文件中注册母版页

在web配置文件中写的配置母版页信息应用到与web配置文件位于同一文件夹(或其子文件夹)中的所有页面

[csharp] view plaincopy
  1. <configuration>  
  2.     <system.web>        
  3.         <pages masterPageFile="~/SimpleMaster.master"></pages>  
  4.     </system.web>  
  5. </configuration>  

4、如果想在内容页修改母版页内容,可以使用title,page header属性,暴露母版页属性,对母版页使用FindControl方法 来修改。具体google。

5、动态加载母版页,来修改整个网站的风格。

 动态修改一个页面 Dynamic1.master:

  1. <%@ Page Language="C#" MasterPageFile="~/Dynamic1.master" %>  
  2. <script runat="server">  
  3.   
  4.     protected void Page_PreInit(object sender, EventArgs e)  
  5.     {  
  6.         if (Request["master"] != null)  
  7.         {  
  8.             switch (Request["master"])  
  9.             {  
  10.                 case "Dynamic1":  
  11.                     Profile.MasterPageFile = "Dynamic1.master";  
  12.                     break;  
  13.                 case "Dynamic2":  
  14.                     Profile.MasterPageFile = "Dynamic2.master";  
  15.                     break;  
  16.             }  
  17.         }  
  18.           
  19.         MasterPageFile = Profile.MasterPageFile;  
  20.     }  
  21. </script>  
  22.   
  23. <asp:Content   
  24.     ID="Content1"   
  25.     ContentPlaceHolderID="ContentPlaceHolder1"   
  26.     Runat="Server">  
  27.   
  28.     Select a Master Page:  
  29.     <ul class="selectMaster">  
  30.         <li>  
  31.         <a href="DynamicContent.aspx?master=Dynamic1">Dynamic Master 1</a>  
  32.         </li>  
  33.         <li>  
  34.         <a href="DynamicContent.aspx?master=Dynamic2">Dynamic Master 2</a>  
  35.         </li>  
  36.     </ul>          
  37.              
  38. </asp:Content>  
因为母版页的名称赋值给了profile属性,所以用户很久以后再回到此网站,仍然会加载此用户以前使用过的母版页。Profile对象可以在用户多次访问同一个站点时自动维护它的属性,Profile的定义在下边的配置文件中

web配置文件

  1. <system.web>  
  2.    <profile>  
  3.      <properties>  
  4.     <add name="MasterPageFile" defaultValue="Dynamic1.master"/>  
  5.      </properties>  
  6.    </profile>  
  7. </system.web>  


如需要对站点中的所有内容都动态加载母版页,最简单的方式时建一个page基类。放在App_Code文件夹中

DynamicMasterPage.cs

[csharp] view plaincopy
  1. using System;  
  2. using System.Web.UI;  
  3. using System.Web.Profile;  
  4.   
  5. public class DynamicMasterPage : Page  
  6. {  
  7.   
  8.     protected override void OnPreInit(EventArgs e)  
  9.     {  
  10.         this.MasterPageFile = (string)Context.Profile["MasterPageFile"];  
  11.         base.OnPreInit(e);  
  12.     }  
  13.   
  14. }  

创建新的Page基类以后,还需要在web配置中注册它。

  1. <configuration>  
  2.   <system.web>  
  3.       <pages pageBaseType="DynamicMasterPage" />  
  4.         <profile>  
  5.       <properties>  
  6.         <add name="MasterPageFile" defaultValue="Dynamic1.master"/>  
  7.       </properties>  
  8.        </profile>  
  9.   </system.web>  
  10. </configuration>  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多