zoukankan      html  css  js  c++  java
  • BlogEngine 页面设计 动态使用母版页

    ASP.NET 的母版页让你能够轻松地创建和维护Web网站上一致的外观。你可以用母版页来定义整个网站的显示,或者网站的一组子页面。母版页含有所有的顶级HTML元素。这包括html、页头、正文和HTML窗体元素,因此内容页面不应该含有这些元素。头元素必须带有runat=server属性,而且在运行期间其头文本要用内容页面的标题文本来替换。

    母版页包括内容占位符控件,以接纳来自内容页面的输出。 在BlogEngine中,所有的站位符控件都使用ID “cphBody”
     <asp:ContentPlaceHolder ID="cphBody" runat="server" />

    内容页面使用内容控件来指定要被插入母版页的内容区域。在BlogEngine的Default.aspx页面中,内容如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="default.aspx.cs" Inherits="_default" %>
    <%@ Register Src="User controls/PostList.ascx" TagName="PostList" TagPrefix="uc1" %>

    <asp:Content ID="Content1" ContentPlaceHolderID="cphBody" Runat="Server">
      <uc1:PostList ID="PostList1" runat="server" />
      <blog:PostCalendar runat="server" ID="calendar"
        EnableViewState="false"
        ShowPostTitles="true"
        BorderWidth="0"
        NextPrevStyle-CssClass="header"
        CssClass="calendar"
        WeekendDayStyle-CssClass="weekend"
        OtherMonthDayStyle-CssClass="other"
        UseAccessibleHeader="true"
        Visible="false"
        Width="100%" />   
    </asp:Content>

    在 <%@ Page Language="C#" > 中并没有通过设置MasterPageFile属性确定母版页。此时在vs设计器中打开页面时会显示错误

    BlogEngine的default页继承自BlogEngine.Core.Web.Controls.BlogBasePage. 在页面的OnPreInit事件中,会通过程序设计的theme主题,自动选择当前页面的风格主题。

    private string _Theme = BlogSettings.Instance.Theme;
      /// <summary>
      /// Assignes the selected theme to the pages.
      /// </summary>
      protected override void OnPreInit(EventArgs e)
      {
       if (Request.QueryString["theme"] != null)
        _Theme = Request.QueryString["theme"];

       MasterPageFile = Utils.RelativeWebRoot + "themes/" + _Theme + "/site.master";

       base.OnPreInit(e);

       .................    

      }。

    这也是我们创建可动态改变网站风格的一种方法。 使用母版页创建可更改主题风格的原理就是,在页面的PreInit事件中,设置当前的 this.MasterPageFile = "××××.master";

    母板页的值可以防止在session中,或者数据中,或者cookie中,在需要时候获取

  • 相关阅读:
    开源协议介绍
    Guice vs Dependency Injection By Hand
    Eclipse与MyEclipse的联系和区别
    Java Basic
    解决Windows Vista 英文版中文软件乱码
    [转]Java B/S开发模式漫谈
    什么是Groovy
    JBoss, Geronimo, Tomcat
    一个让你迅速理解Javabean的实例
    keepalive 原理讲解 salami
  • 原文地址:https://www.cnblogs.com/ZhengGuoQing/p/1370504.html
Copyright © 2011-2022 走看看