ASP.NET笔记(三)

 

一、使用主题自定义网站(App_Themes,<@Page Theme/StyleSheetTheme..>,<page theme="">)

 

创建主题并将其应用于页

  1. 在 Visual Web Developer 中,右击网站名,单击“添加 ASP.Net 文件夹”,然后单击“主题”

    将创建名为“App_Themes”的文件夹和名为“Theme1”的子文件夹。

  2. “Theme1”文件夹重命名为 sampleTheme。

    此文件夹名将成为创建的主题的名称(在这里是“sampleTheme”)。 具体名称无关紧要,但是在应用自定义主题的时候,必须记住该名称。

  3. 右击“sampleTheme”文件夹,选择“添加新项”,添加一个新的文本文件,然后将该文件命名为 sampleTheme.skin。

  4. 在 sampleTheme.skin 文件中,按下面的代码示例所示的方法添加外观定义。

    <asp:Label runat="server" ForeColor="red" Font-Size="14pt" Font-Names="Verdana" />
    <asp:button runat="server" Borderstyle="Solid" Borderwidth="2px" Bordercolor="Blue" Backcolor="yellow"/>

 

 @ Page 指令中,添加一个将 sampleTheme 指定为主题名称的 Theme 特性:

<%@ Page Theme="sampleTheme" ... %> 

 

样式表主题与自定义主题

 

创建了主题后,可以定制如何在应用程序中使用主题,方法是:将主题作为自定义主题与页关联(如上一节中所做的那样),或者将主题作为样式表主题与页关联。 样式表主题使用和自定义主题相同的主题文件,但是样式表主题在页的控件和属性中的优先级更低,相当于 CSS 文件的优先级。 在 ASP.NET 中,优先级的顺序是:

  • 主题设置,包括 Web.config 文件中设置的主题。

  • 本地页设置。

  • 样式表主题设置。

在这里,如果选择使用样式表主题,则在页中本地声明的任何项都将重写主题的属性 同样,如果使用自定义主题,则主题的属性将重写本地页中的任何内容,以及使用中的任何样式表主题中的任何内容

 

为样式表主题声明:

<%@ Page StyleSheetTheme="sampleTheme" %>

 

基于现有控件创建自定义主题

 

  1. 在“设计”视图中,设置“日历”控件的属性,使该控件具有特别的外观。 下列设置为推荐设置:

    • BackColor   Cyan

    • BorderColor   Red

    • BorderWidth   4

    • CellSpacing   8

    • Font-Name   Airal

    • Font-Size   Large

    • SelectedDayStyle-BackColor   Red

    • SelectedDayStyle-ForeColor   Yellow

    • TodayDayStyle-BackColor   Pink

    注意 注意

    定义的具体特性无关紧要。 上面列表的值是建议值,采用这些建议值在稍后测试主题时效果将较为明显。

  2. 切换到“源”视图,并复制 <asp:calendar> 元素及其特性。

  3. 切换到 sampleTheme.skin 文件或打开该文件。

  4.  Calendar 控件定义粘贴到 sampleTheme.skin 文件中。

  5. 从 sampleTheme.skin 文件中的定义中移除 ID 属性

  6. 保存 sampleTheme.skin 文件。

  7. 切换到 Default.aspx 页,再将一个“日历”控件拖到页上。 不要设置该控件的任何属性。

  8. 运行 Default.aspx 页。

    两个“日历”控件将具有相同的外观。 第一个“日历”控件反映出您设置的显式属性设置。 第二个“日历”控件从您在 sampleTheme.skin 文件中创建的外观定义中继承其外观属性。

 

将主题应用于网站

 

  1. 打开 Web.config 文件。

  2.  pages 元素中,添加 theme 特性,并将其值设置为要应用于整个网站的主题的名称,如下面的示例所示:

    <pages theme="sampleTheme" >
    
    注意注意

    Web.config 文件中的元素和特性名称区分大小写。

  3. 保存并关闭 Web.config 文件。

  4. 切换到 Default.aspx 文件或打开 Default.aspx 文件,然后切换到“源”视图。

  5.  @ Page 声明中移除 theme 特性 (theme="themeName")

  6. 按 Ctrl+F5 运行 Default.aspx。

    该页现在使用 Web.config 文件中指定的主题显示。

如果选择在页声明中指定一个主题名称,该主题名称将重写 Web.config 文件中指定的任何主题。

 

 

二、创建用户可选择的主题

 

母板页:

 

<%@ Master Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
        <table width="100%" cellspacing="0" cellpadding="0" border="0" class="header">
            <tr>
                <td class="title">Switchable Themes Example</td>
            </tr>
            <tr>
                <td><hr /></td>
            </tr>
            <tr>
                <td>
                <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
                </asp:contentplaceholder>
                </td>
            </tr>
            <tr>
                <td><hr /></td>
            </tr>
        </table>
    </form>
</body>
</html>

 

内容页:

<%@ Page Title="Switchable Themes" StylesheetTheme="Blue"  Language="C#" MasterPageFile="~/Master1.master" AutoEventWireup="true" CodeFile="Home1.aspx.cs" Inherits="Home1" %>
<script runat="server">   
  public 
void Page_PreInit()
   {
       
int loop1;
       NameValueCollection coll;

       coll 
= Request.Form;
       
// Get names and values of all forms into a string array.
       String[] arr1 = coll.AllKeys;
       
for (loop1 = 0; loop1 < arr1.Length; loop1++)
       {
           Response.Write(
"Form's name: " + arr1[loop1] + "  Form's value:" + coll[arr1[loop1]] + "<br>");
       }
       
// Get names and values of all forms into a string array.
       for (int i = 0; i < coll.Count; i++)
           Response.Write(
"index:"+i+" name:"+coll.GetKey(i)+ "  value:"+coll.Get(i)+"<br>");

      
        
// Sets the Theme for the page.
        this.Theme = "Blue";
        
if (Request.Form != null && Request.Form.Count > 0)
            
this.Theme = this.Request.Form[5].Trim();
    } 
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <h1 id="title1">Switchable Themes on a Page</h1><br />
    <h2 id="title2">Note how the master page content and the page content are affected</h2>
    <p>Select a color from the drop-down list below to change the appearance of this page.</p>
    <br /><br />
    <asp:dropdownlist id="ddlThemes" runat="server" autopostback="true" >
      <asp:listitem value="Blue">I'd like the page to be blue!</asp:listitem>
      <asp:listitem value="Red">I'd like the page to be red!</asp:listitem>
      <asp:listitem value="Green">I'd like the page to be green!</asp:listitem>
    </asp:dropdownlist>
</asp:Content>

 

 主题:

 

NameValueCollection类参考:http://msdn.microsoft.com/zh-cn/library/system.collections.specialized.namevaluecollection#Y4040

HttpRequest.Form属性:http://msdn.microsoft.com/zh-cn/library/system.web.httprequest.form

 

 

三、创建和使用 ASP.NET 母版页(MasterType,Page_PreInit,Session,DOCUMENT,LinkButton) 


1、对母版页进行布局

母版页定义站点中页面的外观。 它可以包含静态文本和控件的任何组合。 母版页还可以包含一个或多个内容占位符,这些占位符指定显示页面时动态内容出现的位置。在本演练中,将使用一个表格来帮助在页面中定位元素。 首先创建一个布局表格来保存母版页元素。

创建母版页的布局表格:请勿将布局表格放在 ContentPlaceHolder 控件内。
将静态内容添加到母版页:现在可以定位内容占位符,以指定母版页在运行时显示内容的位置。
移动内容占位符:将 ContentPlaceHolder 控件拖动到右中单元格中。

2、创建母版页的内容
母版页提供内容的模板。 通过创建与母版页关联的 ASP.NET 页来定义母版页的内容。 内容页是 ASP.NET 页的专用形式,它仅包含要与母版页合并的内容。 在内容页中,添加用户请求该页面时要显示的文本和控件。在本演练中,将为母版页添加两个带有内容的页面。 第一个是默认页面(主页),第二个是“关于”页面。

母版页中的 ContentPlaceHolder 控件在新的内容页中显示为 Content 控件。 将显示其余的母版页内容,以便您可以查看布局。 但母版页内容显示为灰色,因为编辑内容页时不能更改它,只有在可以添加内容的位置光标才变为 I 条。

3、引用母版页成员
内容页中的代码可以引用母版页上的成员,包括母版页上的任何公共属性或方法以及任何控件。 在演练的此部分中,在母版页上创建一个属性,然后在内容页中使用此属性的值。 前提是网站的公司名已作为属性存储在母版页中,且内容页中对公司名的任何引用都基于此母版页属性。

将属性添加到母版页:为母版页创建名为 CompanyName 的属性。在视图状态中存储此值,以便此值在回发之间保持不变。
在内容页中引用 CompanyName 属性:在页面顶部的 @ Page 指令下,添加下面的 @ MasterType 指令:<%@ MasterType virtualpath="~/Master1.master" %>,此指令将内容页的 Master 属性(即将使用此属性)绑定到 Master1.master 页。

4、动态更改母版页
在某些情况下,可能希望能够动态更改母版页;也就是使用代码设置内容页的母版页。 例如,可能希望允许用户从几个布局中进行选择,根据个人喜好设置母版页。

在“属性”窗口顶部的下拉列表中单击“DOCUMENT”。将 BgColor 属性更改为明显与为 Master1 选择的颜色不同的颜色。下一步是向每个母版页添加一个按钮,此按钮允许用户选择备用母版页。

添加用于选择备用母版页的按钮:将备用母版页的文件名加载到一个持久的会话变量中,然后重新加载当前页。 (Url 属性返回引用当前页的 Uri 对象。)很快将在使用母版页的名称的内容页中创建代码。
编写代码以动态选择母版页:已经创建的默认页面包含一个 @ MasterType 指令,该指令实际上将此页绑定到单个母版页 (Master1.master)。 因此,将无法动态地将母版页分配到默认页面,而是使用其他已创建的页。将当前页的 MasterPageFile 属性的值设置为会话变量中的值(如果有)。 此代码必须在 Page_PreInit 处理程序中运行;它无法在任何晚于 Page_PreInit 处理程序发生的处理程序中运行(例如,在 Page_Init 处理程序中),因为必须建立母版页,使得页面可以创建其实例,然后可以进一步初始化。

About.aspx.cs:

void Page_PreInit(Object sender, EventArgs e)
    {
        if (Session["masterpage"] != null)
        {
            this.MasterPageFile = (String)Session["masterpage"];
        }
    }

 

About.aspx:

 

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="About.aspx.cs" Inherits="About" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <h2>
        关于 Contoso</h2>
    <p>
        <span style="color: rgb(0, 0, 0); font-family: 'Segoe UI', Verdana, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 225); display: inline !important; float: none; ">
        从 1982 年起,Contoso 一直提供优质的软件服务</span></p>
</asp:Content>

 

Master1.master

 

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<!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 runat="server">
    <title></title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
    <style type="text/css">
        .style1
        
{
            width
: 100%;
        
}
    
</style>
</head>
<body bgcolor="#3366cc">
    <form id="form1" runat="server">
    <div>
    </div>
    <table bgcolor="#FFFF99" class="style1">
        <tr>
            <td colspan="2" height="48">
                <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal">
                    <Items>
                        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="主页" Value="主页"></asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/Training.aspx" Text="关于" Value="关于"></asp:MenuItem>
                    </Items>
                </asp:Menu>
                <asp:Image ID="Image1" runat="server" Height="16px" ImageUrl="~/未命名.gif" 
                    Width
="27px" />
                <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">第二种颜色</asp:LinkButton>
            </td>
        </tr>
        <tr>
            <td width="48">
                &nbsp;</td>
            <td>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
            </td>
        </tr>
        <tr>
            <td colspan="2" height="48">
                <span style="color: rgb(0, 0, 0); font-family: 'Segoe UI', Verdana, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 225); display: inline !important; float: none; ">
                Copyright 2007 Contoso Inc.</span></td>
        </tr>
    </table>
    </form>
</body>
</html>

 

Master1.master.cs

 

public String CompanyName
    {
        get { return (String)ViewState["companyName"]; }
        set { ViewState["companyName"] = value; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    void Page_Init(Object sender, EventArgs e)
    {
        this.CompanyName = "New Contoso";
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        Session["masterpage"] = "MasterPage2.master";
        Response.Redirect(Request.Url.ToString());
    }

Default.aspx.csx:

 

protected void Page_Load(object sender, EventArgs e)
    {
        lblCompanyName.Text = Master.CompanyName;
    }

Default.aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<%@ MasterType virtualpath="~/MasterPage.master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <h1>
        欢迎光临网站<asp:Label ID="lblCompanyName" runat="server" Text="Label"></asp:Label>
    </h1>
    <p>
        <span style="color: rgb(0, 0, 0); font-family: 'Segoe UI', Verdana, Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 225); display: inline !important; float: none; ">
        感谢您访问本站</span></p>
</asp:Content>

 

四、ASP.NET 中使用嵌套的母版页 

 

<div id="banner">
  <img src="banner.gif" alt="banner graphic" />
</div>

<div id="banner">
  <img src="footer.gif" alt="footer graphic" />
</div>

<div id="2col">
  <asp:ContentPlaceHolder ID="leftcolumn" runat="server">
  </asp:ContentPlaceHolder>
  <asp:ContentPlaceHolder ID="rightcolumn" runat="server">
  </asp:ContentPlaceHolder>
</div>

 

 

CSS-Positioning:http://www.barelyfitz.com/screencast/html-training/css/positioning/

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

磁盘IO:缓存IO与直接IO

文件系统IO分为DirectIO和BufferIO,其中BufferIO也叫Normal IO。 1. 缓存IO 缓存I/O又被称作标准I/O&#xff0c;大多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中&#xff0c;数据先从磁盘复制到内核空间的缓冲区&#xff0c;然后从内核空间缓冲区复制到应用程…

F#初学笔记08

惰性求值惰性求值也叫按需调用&#xff0c;是一个演算策略&#xff0c;延迟一个表达式的演算&#xff0c;直到需要用到演算值的时候再演算&#xff0c;同时也避免了重复演算。惰性求值的好处包括&#xff1a;避免不必要的计算&#xff0c;提升性能。可以构造以构造一个无限的数…

在Finder标题栏上显示完整路径

From: http://www.7do.net/resources-5411-1-1.html 打开终端&#xff0c;输入以下命令并回车&#xff1a; defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES 然后再把finder关了再打开&#xff0c;你会发现路径栏变成这个样子了&#xff1a; 其实呢&a…

Wamp5 配置PHP 图文详解(转)

Wamp5论坛配置图文版 知识扫盲&#xff1a; 1、WampSever指的是apache mySQL PHP三合一套装&#xff0c;第一字母W&#xff0c;是指用于windows系统&#xff0c;我用的是2.0f版。用于Linux系统的&#xff0c;是LampSever&#xff0c;第一字母是L。 下载地址http://jaist.dl.s…

9个小窍门让OS X中Finder用起来更顺手

From: http://digi.tech.qq.com/a/20130309/000051.htm 腾讯数码讯&#xff08;编译&#xff1a; 李斯特&#xff09;Finder是OS X系统上用户与文件系统打交道的主要途径之一&#xff0c;它的默认设置是能满足普通用户绝大多数日常需求的。但我们同样可以通过一些小配置来使它…

xcode-select: error: tool 'xcodebuild' requires Xcode错误解决方法

From: http://blog.csdn.net/jymn_chen/article/details/21613745 因为机子里有两个Xcode&#xff0c;所以分别重命名了&#xff0c;但是在运行一个MakeFile时却报了以下错误&#xff1a; [plain] view plaincopyxcodebuild -target "GHUnitIOS (Device)" -configu…

利用Bdrive打造个人私有云存储解决方案

Bdrive 一款私有云储存软件&#xff0c;可以自己方便的在 Mac/Windows 下架设服务器&#xff0c;并可以通过 PC、Mac、iOS、Android 跨平台使用。以下简单介绍一下利用Bdrive来完成个人私有云存储解决方案。 第一步&#xff0c;搭建Bdrive云存储服务器 先下载Bdrive服务器程序&…

MVC路由中routes.IgnoreRoute({resource}.axd/{*pathInfo}) 到底什么意思!

转自&#xff1a;http://blog.csdn.net/lvjin110/article/details/24638913 参考&#xff08;1&#xff09; http://www.cnblogs.com/flyfish2012/archive/2013/02/01/2889184.html 我们在开发MVC当中&#xff0c;经常在我们的全局类的路由设置&#xff0c;看到这样的代码&…

未能加载文件或程序集“Autofac, Version=3.4.0.0,

遇到这个错误的时候&#xff1a;如下图 未能加载文件或程序集“Autofac, Version3.4.0.0, Cultureneutral, PublicKeyToken17863af14b0044da”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 只要在config加上 <runtime><assemblyBinding xmlns"…

浅谈关于SRAM与DRAM的区别

从名字上看&#xff0c;SRAM与DRAM的区别只在于一个是静态一个是动态。由于SRAM不需要刷新电路就能够保存数据&#xff0c;所以具有静止存取数据的作用。而DRAM则需要不停地刷新电路&#xff0c;否则内部的数据将会消失。而且不停刷新电路的功耗是很高的&#xff0c;在我们的PC…

字符串系列之最长回文子串

2019独角兽企业重金招聘Python工程师标准>>> 问题描述&#xff1a; 给定一个字符串SA1A2...An&#xff0c;要求找出其最长回文子串&#xff08;Longest Palindromic Substring&#xff09;。所谓回文子串就是S的某个子串Ai...Aj为回文。例如&#xff0c;对字符串Sab…

Host SMBus controller not enabled的解决方法

From: http://blog.csdn.net/starmlk/article/details/7982077 SMBus 目录 SMBus与I2C的差别SMBus 是 System Management Bus 的缩写&#xff0c;是1995年由Intel提出的&#xff0c;应用于移动PC和桌面PC系统中的低速率通讯。它主要是希望通过一条廉价并且功能强大的总线&…

【Bugly干货分享】微信文件微起底Ⅰ

Bugly 技术干货系列内容主要涉及移动开发方向&#xff0c;是由 Bugly 邀请腾讯内部各位技术大咖&#xff0c;通过日常工作经验的总结以及感悟撰写而成&#xff0c;内容均属原创&#xff0c;转载请标明出处 微信大家都在用&#xff0c;但微信的本地文件到底隐藏着什么样的信息呢…

由旋转矩阵求旋转中心

在图像的复合变化过程中&#xff0c;通常会用到Matrix矩阵&#xff0c;一般的过程是先构造仿射变换矩阵&#xff0c;然后对图像进行仿射变换&#xff0c;如&#xff1a;围绕点&#xff08;100&#xff0c;100&#xff09;旋转30度(sin 30 0.5 &#xff0c;cos 30 0.866)&…

git服务器搭建

本文主要记录在Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录&#xff0c;以下是操作步骤&#xff08;主要参考资料&#xff1a;https://about.gitlab.com/downloads/#ubuntu1604&#xff09;。1.安装依赖包&#xff0c;运行命令sudo apt-get install curl openssh-server…

Ubuntu桌面版网络设置

先来说下我的经验吧&#xff0c;我觉得Ubuntu桌面版中网络配置最好的方法是用Network-Manager这个带界面的软件&#xff0c;因为桌面版中这个软件是自动启动的。理由如下&#xff1a; 1. 如果要把这个软件设置为开机时不启动&#xff0c;得执行&#xff1a;chkconfig network-…

ant-design之form-重置表单多个值

重置form表单中的某一个值或者一次重置多个值 watch: {databaseType: function(curr, old) {this.getMyTableData [];this.form.resetFields([databaseSource,"databaseName","tableName",""]);},},

2016matlab安装

百度云的下载链接&#xff08;永久有效&#xff09;链接&#xff1a;https://pan.baidu.com/s/1dGZB4q9 密码&#xff1a;pfl3Matlab用途&#xff1a;点击打开链接与网盘资源相对应的安装教程1.将网盘中的3个文件下载下来后&#xff0c;解压&#xff08;在当前路径下&#xff0…

Nginx_查看并发连接数

通过查看Nginx的并发连接&#xff0c;我们可以更清除的知道网站的负载情况。Nginx并发查看有两种方法&#xff08;之所以这么说&#xff0c;是因为笔者只知道两种&#xff09;&#xff0c;一种是通过 web界面&#xff0c;一种是通过命令&#xff0c;web查看要比命令查看显示的结…