【.NET全栈】ASP.NET开发web应用——ASP.NET中的样式、主题和母版页 ...

金歌  论坛元老 | 2024-7-20 04:04:30 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1022|帖子 1022|积分 3066


前言

本章讨论ASP.NET的页面创作技术,现现在的网页网站、Web Base应用步伐越来越注重页面的外观和可操纵性。一致的外观能给用户精良的形象,并能充实展示企业的形象和文化内涵。ASP.NET提供了多种用于同一页面外观的方法。


  • 样式:CSS标准的一部门,样式并不是ASP.NET中才有的技术,但是使用这个技术能够为ASP.NET Web项目提供一致的格式外观。
  • 主题:主题可以为Web服务器控件提供一致的外观设置,与样式属于雷同的技术,但主题只针对于服务器控件。
  • 母版页:母版页用于定义网站的一致性布局。
接下来要学习做的事变主要有3个,在ASP.NET应用CSS样式,创建和使用主题,创建和使用母版页。
一、在ASP.NET中应用CSS样式

Web应用中使用HTML语言,存在一些限制,比如在不同的浏览器中显示效果不一样、缺乏标准的支持、HTML代码布局杂乱等。
解决这些问题的方案是使用CSS标准,CSS支持全部现代的浏览器,而且提供了一整套格式化属性,可以应用这些属性到任何的HTML元素上,比如添加边框、设置字体等。CSS技术是Web标准的主要表现层技术,除了设置一些外观之外,现现在很多符合Web标准的站点都在使用CSS来进行页面的布局。
要设计一个标准的Web站点(站点是指互联网上的一个网站、网页或网络服务的地址或位置。),应该多思量使用CSS而较少地使用HTML的标签格式化语法。
1、创建CSS样式

(1)内联样式

内联样式表直接放到HTML标签的内部,这种形式的样式会导致HTML代码的杂乱。内联样式表现例代码如下,代码放在一个HTML文件中在浏览器中运行:
  1. <p style="color:white; background:blue; font-size:x-large; padding:10px">
  2.         这行文本的背景显示为蓝色.
  3.     </p>
复制代码
运行结果:

(2)内部样式表

放置在Web标签页区中的样式聚集。可以使用自样式表的样式来格式化Web控件。使用内联样式,让格式与内容清楚分离,而且可以对同一页面的格式进行多次重用。内部样式表的表现示比方下:
  1. <html xmlns="http://www.w3.org/1999/xhml">
  2. <head runat="server">
  3.     <title>CSS演示效果</title>
  4.     <style type="text/css">
  5.         .labelStyle
  6.         {
  7.             font-family: 宋体, Arial, Arial, Helvetica, sans-serif;
  8.             font-size: 9pt;
  9.         }
  10.         body
  11.         {
  12.             background-color: #c13d3d;
  13.         }
  14.     </style>
  15. </head>
  16. <body>
  17.     <form id="form1" runat="server">
  18.         <div>
  19.             <asp:TextBox id="TextBox1" runat="server" CssClass="labelStyle">
  20.             </asp:TextBox>
  21.         </div>
  22.     </form>
  23. </body>
  24. </html>
复制代码
可以看到代码里将CSS样式放在了整哥html文档的head中,与body内容分离,CSS样式可以在整个页面内元素中复用。
运行结果如下:

(3)外部样式表

外部样式表与内部样式表一样,是样式和内容分离的,但是样式是放在单独文件中,这样多个文件都可以使用这个单独文件中的样式。
通常建议使用外部样式表来管理和设置样式,这样样式可以被多个页面重用,而且可以轻松地将样式复制到其他应用步伐中进行复用。
步骤1:新建一个ASP.NET 网站;
步骤2:给项目增加一个html页面;
步骤3:给项目新增一个样式表文件。

   HtmlPage1.html中链接StyleSheet1.css中样式的是这句代码:
  1. <link href="StyleSheet1.css" rel="StyleSheet1" type="text/css">
复制代码
HtmlPage1.html中的代码如下:
  1. <!DOCTYPE html><html><head>    <meta charset="utf-8" />    <title>外联CSS样式表</title>    <link href="StyleSheet1.css" rel="StyleSheet1" type="text/css">
  2. </head><body>    <div id="left">        左边的文本    </div>    <div id="right">        右边的文本    </div></body></html>
复制代码
StyleSheet1.css中的代码如下:
  1. #left
  2. {
  3.     font-family: Verdana;
  4.     font-size: 20pt;
  5.     background-color: #ff6a00;
  6.     border-style: solid;
  7.     border-width: 2px;
  8.     width: 100px;
  9.     height: 300px;
  10.     float: left;
  11. }
  12. #right
  13. {
  14.     font-family: Verdana;
  15.     font-size: 10pt;
  16.     background-color: #00ffff;
  17.     border-style: solid;
  18.     border-width: 2px;
  19.     height: 300px;
  20.     float: right;
  21. }
复制代码
2、应用CSS样式

关于外联CSS样式的应用已经在前面应用过了,浏览器运行可查看样式。更多详细的、细节的应用,可以参考菜鸟教程中关于CSS样式的学习和应用。
  1. 菜鸟教程链接:https://www.runoob.com/css/css-examples.html
复制代码
我们来看3个菜鸟教程中样式应用的例子,在VS2019中实践吧!
(1)菜鸟教程-简单例子



  • 窗体中代码:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormSimple.aspx.cs" Inherits="WebAppCainiaoSimple.WebFormSimple" %>
  2. <!DOCTYPE html>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6.     <title>菜鸟教程简单例子</title>
  7.     <link href="StyleSheetSimple.css" rel="stylesheet" type="text/css">
  8. </head>
  9. <body>
  10.     <form id="form1" runat="server">
  11.         <h1>
  12.              CSS实例!
  13.         </h1>
  14.         <p>
  15.             这是一个段落。。。
  16.         </p>
  17.     </form>
  18. </body>
  19. </html>
复制代码


  • CSS样式表中代码:
  1. body {
  2.     background-color: #d0e4fe;
  3. }
  4. h1 {
  5.     color: orange;
  6.     text-align:center;
  7. }
  8. p {
  9.     font-family: "Times New Roman";
  10.     font-size: 20px;
  11. }
复制代码
项目中截图:


运行结果:

(2)菜鸟教程-用户界面



  • 窗体中代码:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormUser.aspx.cs" Inherits="WebAppCnForm.WebFormUser" %>
  2. <!DOCTYPE html>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6.     <title>菜鸟教程表单</title>
  7.     <link href="StyleSheetUser.css" rel="stylesheet" type="text/css">
  8. </head>
  9. <body>
  10.      <div class="container">
  11.      <form id="form1" runat="server">
  12.         <h3>反馈表单</h3>
  13.       
  14.          <label for="cname">联系人</label>
  15.          <input id="cname" type="text" name="cname" placeholder="请输入姓名..."></input>
  16.          <label for="email">邮箱</label>
  17.          <input id="email" type="text" name="email" placeholder="请输入邮箱..."></input>
  18.          <label for="country">城市</label>
  19.          <select id="country" name="country">
  20.              <option value="beijing">北京</option>
  21.              <option value="shanghai">上海</option>
  22.              <option value="changsha">长沙</option>
  23.          </select>
  24.          <label for="subject">反馈信息</label>
  25.          <textarea id="subject" name="subject" placeholder="反馈内容..." style="height: 200px"></textarea>
  26.          <input type="submit" value="提交"></input>
  27.      </form>
  28.      </div>
  29. </body>
  30. </html>
复制代码


  • 样式表中代码:
  1. body {
  2. }
  3. input[type=text], select, textarea {
  4.     width: 100%;
  5.     padding: 12px;
  6.     border: 1px solid #ccc;
  7.     border-radius: 4px;
  8.     box-sizing: border-box;
  9.     margin-top: 6px;
  10.     margin-bottom: 16px;
  11.     resize: vertical;
  12. }
  13. input[type=submit] {
  14.     background-color: #4caf50;
  15.     color: white;
  16.     padding: 12px 20px;
  17.     border: none;
  18.     border-radius: 4px;
  19.     cursor: pointer;
  20. }
  21. input[type=submit]:hover {
  22.     background-color: #45a049;
  23. }
  24. .container {
  25.     border-radius: 5px;
  26.     background-color: #f2f2f2;
  27.     padding: 20px;
  28. }
复制代码
讲解:
运行结果:

(3)菜鸟教程-设计一个网页




  • 窗体中代码:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormPage.aspx.cs" Inherits="text.WebFormPage" %>
  2. <!DOCTYPE html>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6.     <title>菜鸟教程做一个网页</title>
  7.     <link href="StyleSheetPage.css" rel="stylesheet" type="text/css">
  8. </head>
  9. <body>
  10.     <form id="form1" runat="server">
  11.         <div class="header">
  12.             <h1>一个漂亮的网页</h1>
  13.             <p>小小的网页</p>
  14.         </div>
  15.         <div class="navbar">
  16.             <a href="#">链接1</a>
  17.             <a href="#">链接2</a>
  18.             <a href="#">链接3</a>
  19.             <a href="#" class="right">链接4</a>
  20.         </div>
  21.         <div class="row">
  22.             <div class="side">
  23.                 <h2>关于我</h2>
  24.                 <h5>我的照片</h5>
  25.                 <div class="fakeimg" style="height:200px;">这边插入图像</div>
  26.                 <p>关于我的介绍</p>
  27.                 <h3>更多内容</h3>
  28.                 <p>我的更多内容...</p>
  29.                 <div class="fakeimg" style="height:60px;">这边插入图片</div>
  30.                 <div class="fakeimg" style="height:60px;">这边插入图片</div>
  31.                 <div class="fakeimg" style="height:60px;">这边插入图片</div>
  32.             </div>
  33.             <div class="main">
  34.                 <h2>标题</h2>
  35.                 <h5>副标题</h5>
  36.                 <div class="fakeimg" style="height:200px;">图像</div>
  37.                 <p>一些文本...</p>
  38.                 <p>菜鸟教程,学的不仅是技术,更是梦想!!!</p>
  39.                 <br>
  40.                 <h2>标题</h2>
  41.                 <h5>副标题</h5>
  42.                 <div class="fakeimg" style="height:200px;">图像</div>
  43.                 <p>一些文本...</p>
  44.                 <p>这是从菜鸟教程上学习的例子,希望学完后能做一个大项目!!!</p>
  45.             </div>
  46.         </div>
  47.         <div class="footer">
  48.             <h2>版权所有</h2>
  49.         </div>
  50.     </form>
  51. </body>
  52. </html>
复制代码


  • CSS样式表代码:
  1. * {
  2.     box-sizing: border-box;
  3. }
  4. /*body样式*/
  5. body {
  6.     font-family: Arial;
  7.     margin: 0;
  8. }
  9. /* 标题 */
  10. .header {
  11.     padding: 80px;
  12.     text-align: center;
  13.     background: #1abc9c;
  14.     color: white;
  15. }
  16. /* 标题字体加大 */
  17. .header h1 {
  18.     font-size: 40px;
  19. }
  20. /* 导航 */
  21. .navbar {
  22.     overflow: hidden;
  23.     background-color: #333;
  24. }
  25. /* 导航栏样式 */
  26.     .navbar a {
  27.         float: left;
  28.         display: block;
  29.         color: white;
  30.         text-align: center;
  31.         padding: 14px 20px;
  32.         text-decoration: none;
  33.     }
  34.     /* 右侧链接 */
  35.         .navbar a.right {
  36.             float: right;
  37.         }
  38.         /* 鼠标移动到链接的颜色 */
  39.         .navbar a:hover {
  40.             background-color: #ddd;
  41.             color: black;
  42.         }
  43. /* 列容器 */
  44. .row {
  45.     display: -ms-flexbox; /* IE10 */
  46.     display: flexbox;
  47.     -ms-flex-wrap: wrap; /* IE10 */
  48.     flex-wrap: wrap;
  49. }
  50. /* 创建两个列 */
  51. /* 边栏 */
  52. .side {
  53.     -ms-flex: 30%; /* IE10 */
  54.     flex: 30%;
  55.     background-color: #f1f1f1;
  56.     padding: 20px;
  57. }
  58. /* 主要的内容区域 */
  59. .main {
  60.     -ms-flex: 70%; /* IE10 */
  61.     flex: 70%;
  62.     background-color: white;
  63.     padding: 20px;
  64. }
  65. /* 测试图片 */
  66. .fakeimg {
  67.     background-color: #aaa;
  68.     width: 100%;
  69.     padding: 20px;
  70. }
  71. /* 底部 */
  72. .footer {
  73.     padding: 20px;
  74.     text-align: center;
  75.     background: #ddd;
  76. }
  77. /* 响应式布局-在屏幕设备宽度尺寸小于700px时,让两栏上下堆叠显示 */
  78. @media screen and (max-width: 700px) {
  79.     .row {
  80.         flex-direction: column;
  81.     }
  82. }
  83. /* 响应式布局 - 在屏幕设备宽度尺寸小于400px时,让导航栏目上下堆叠显示 */
  84. @media screen and (max-width: 400px) {
  85.     .navbar a {
  86.         float: none;
  87.         width: 100%;
  88.     }
  89. }
复制代码
运行结果:


二、主题

主题就是切换风格,比如CSDN可以选择不同的主题,整个页面会有不同风格(也叫皮肤)。不同于CSS样式在HTML中发生的变化,主题是通过控制服务器控件实现的。
1、创建主题

在应用步伐项目中新增一个文件夹,定名为APP_Themes,该文件夹中可以存放多个主题,每个主题用一个单独的子文件夹。
步骤:
   网站项目-鼠标右键-添加-添加ASP.NET文件夹-主题
  

将第一个文件夹定名为ThemeDark,再新建一个子文件夹,定名为ThemeLight。
然后,选中其中一个子文件夹,鼠标右键添加-Web窗体外观文件,定名为TextBox.skin。
皮肤文件有两类:


  • .skin文件
  • CSS文件

2、创建定名皮肤

3、处置惩罚主题辩论

4、为整个网站应用主题

5、添加CSS样式

6、动态应用主题

三、母版页

母版页雷同于Word中的模板,允许在多个页面中共享雷同的内容。比如网站的Logo,可能需要在多个页面中都重用,则将其放在母版页中。
母版页可以简化维护、扩展和修改网站的过程,并提供一致、同一的外观。
1、创建母版页

母版页与其他普通页相似,可以在其中放置文件或图像、HTML控件、Web服务器控件、后置代码等。母版页的扩展名以.master末端,不能被浏览器直接查看。母版页必须在被其他页面使用后才能进行显示。
创建:

默认代码如下:
  1. <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebAppMaster.Site1" %>
  2. <!DOCTYPE html>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6.     <title></title>
  7.     <asp:ContentPlaceHolder ID="head" runat="server">
  8.     </asp:ContentPlaceHolder>
  9. </head>
  10. <body>
  11.     <form id="form1" runat="server">
  12.     <div>
  13.         <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
  14.         
  15.         </asp:ContentPlaceHolder>
  16.     </div>
  17.     </form>
  18. </body>
  19. </html>
复制代码
如果需要多个ContentPlaceHolder控件,从工具箱中直接拖入即可。




  • 母版页内容修改:
  1. <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="MasterPage2.Site1" %>
  2. <!DOCTYPE html>
  3. <html>
  4. <head runat="server">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6.     <title>母版页示例</title>
  7.     <asp:ContentPlaceHolder ID="head" runat="server">
  8.     </asp:ContentPlaceHolder>
  9.     <link href="StyleSheet.css" rel="stylesheet" type="text/css">
  10. </head>
  11. <body>
  12.     <form id="form1" runat="server">
  13.         <div id="content">
  14.         <div id="top">
  15.             <asp:ContentPlaceHolder ID="ContentTop" runat="server">
  16.             </asp:ContentPlaceHolder>
  17.         </div>
  18.         <div id="left">
  19.             <asp:ContentPlaceHolder ID="ContentLeft" runat="server">
  20.             </asp:ContentPlaceHolder>
  21.         </div>
  22.         <div id="right">
  23.             <asp:ContentPlaceHolder ID="ContentRight" runat="server">
  24.             </asp:ContentPlaceHolder>
  25.         </div>
  26.         </div>
  27.     </form>
  28. </body>
  29. </html>
复制代码


  • 母版页CSS样式:
  1. body {
  2.     background-color: #64E9E5;
  3.     margin: 0px;
  4.     height: 100%;
  5. }
  6. #content {
  7.     background-color: #E8E8EF;
  8.     width: 600px;
  9.     height: 100%;
  10.     margin:0px auto;
  11.     top: 0px;
  12. }
  13. #top {
  14.     top: 0px;
  15.     width: 100%;
  16.     height: 100px;
  17.     background-color: #E3FDE4;
  18. }
  19. #left {
  20.     background-color: #CCCC00;
  21.     float: left;
  22.     width: 200px;
  23.     height: 100%;
  24. }
  25. #right {
  26.     height: 100%;
  27.     background-color: #FFCCCC;
  28. }
复制代码


  • 母版页生成的Web窗体代码修改:
  1. <%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MasterPage2.WebForm1" %>
  2. <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
  3. </asp:Content>
  4. <asp:Content ID="Content2" ContentPlaceHolderID="ContentTop" runat="server">
  5.     <h2>使用母版页示例程序</h2>
  6. </asp:Content>
  7. <asp:Content ID="Content3" ContentPlaceHolderID="ContentLeft" runat="server">
  8.     <h3>左侧边栏</h3>
  9. </asp:Content>
  10. <asp:Content ID="Content4" ContentPlaceHolderID="ContentRight" runat="server">
  11.     <h3>右侧边栏</h3>
  12. </asp:Content>
复制代码
运行结果:但是不知是CSS样式设置的不对还是什么原因,样式不是目的预期的,但是显示成功!
别的一个问题就是网站应用步伐只能在运行与IIS浏览器,点击运行的时间只能运行一次,第二次点大概多次点击就报错,没有解决。

报错界面:

2、默认内容

母版页自己有默认内容,如果新增新的控件可以覆盖默认内容。
3、母版页和相对路径

(1)将图片资源转换为服务器控件。
(2)其他HTML控件也可以使用服务器控件特性。
(3)将绝对路径转换为先相对路径。
4、在web.config中配置母版页

可以为web.config配置文件中定义母版页,这样母版页将被应用到网站中全部的文件大概某个指定的文件。到场内容页中没有任何包含content控件,则母版页将会被主动忽略。
配置代码如下:
  1. <configuration>
  2.     <system.web>
  3.         <pages masterPageFile="~/MasterPage/MasterPage.master"/>
  4.     </system.web>
  5. </configuration>
复制代码
5、修改母版页

一些页面可能想覆盖母版页中的显示,可以在Page区中修改Title属性,也可以通过编程的方式修改Title属性。还可以通过CSS样式修改。
6、动态加载母版页

7、母版页的嵌套

母版页与母版页可以嵌套使用。
在ASP.NET中,可以使用多层的嵌套,但是过多使用母版页嵌套也会导致难以维护的问题。
通常建议开发人员使用1层嵌套即可。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表