博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET模板使用--牛腩收仓
阅读量:4167 次
发布时间:2019-05-26

本文共 4092 字,大约阅读时间需要 13 分钟。

一、模板

      牛腩中的模板,和之前自己学习的模板方法的设计模式很想,不过牛腩中更加注重的界面的样式,实质上他们也算是亲戚。将很多页面上的常用的内容抽象出来,放在模板中,再次创建页面的使用可以在已经创建的模板的基础上进行添加内容。减少了内容的冗余,牛老师提到两种创建模板的方法,一种是模板页(MasterPage),另一种是添加用户控件(WebuserControl),小编今天两种方法都做一个简单的介绍。


二、模板页

2.1MasterPage

        确定公有内容,牛腩中每个页面中都有的内容是这个头部和尾部:

这里写图片描述

        所以我们可以建立一个模板只包含这两块的内容,选择程序集,右键添加,选择-masterpage:新建好号的模板中有如下的内容,只是一个框架

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site2.master.cs" Inherits="WebBlack.blog.Site2" %>    
<%--可变内容的区域,可视为容器,认为这里是精髓,灵活性的体现--%>

        我们在模板中天上头部和尾部,作为固定不变的部分,代码如下:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebBlack.Site1" %>
模板演示
<%--绑定上样式--%>
<%--固定内容1:头部--%>
<%--固定内容2:搜索--%>
<%--可变内容的区域,可视为容器,认为这里是精髓,灵活性的体现--%>
<%--固定内容3 尾部--%>

        这是模板的建完之后的效果图:

这里写图片描述

2.2子页面

        就该创建套用模板的页面了,新建ContentPage,这是我们可以选择模板site1了~

这里写图片描述

        创建好的页面,代码如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/blog/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebBlack.blog.WebForm1" %>
<%--head和母版中的head位置对应--%>
<%--注意这里和模板中可变内容的ID对应着,所以这里填写自己独有的内容--%>

        这是我填写了内容之后的子页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/blog/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebBlack.blog.WebForm1" %><%@ Register src="WebUserControl1.ascx" tagname="WebUserControl1" tagprefix="uc1" %>
<%--head和母版中的head位置对应--%>

三、用户控件(WebuserControl)

        右键创建一个WebuserControl,新建完后的代码如下:只有一行

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl2.ascx.cs" Inherits="WebBlack.blog.WebUserControl2" %>

        我们将内容直接放入放其中:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebBlack.blog.WebUserControl1" %>

新闻分类

        内容是这样的:

这里写图片描述

        这个如何使用呢?我们之前是选择模板,用户控件的话不是选择模板,也不能直接从代码中写,我们将子窗体,点到设计页面,将其拖进来,我们拖拽的位置如下:

这里写图片描述

        拖进来后会自动出现两行的代码,他们是:

这里写图片描述

        现在可以让大家看看子窗体最后的模样的,他是父窗体MasterPage的内容加上WebuserControl的内容加上自己独有的内容:

这里写图片描述


四、嵌套模板

        嵌套模板可以理解为二级模板,在模板的基处上建立另一个模板。右键新建嵌套模板:NestedMasterPage:

这里写图片描述

        选择模板,我们这里选择一级模板:

这里写图片描述

        建完之后的模板代码如下:

<%@ Master Language="C#" MasterPageFile="~/blog/Site1.Master" AutoEventWireup="true" CodeBehind="NestedMasterPage1.master.cs" Inherits="WebBlack.blog.NestedMasterPage1" %>
<%--这里包着的内容是套用改模板的页面可以特用的内容--%>

        一下的步骤就和咱们上面说的一级的模板一样的,这里就不赘述了,这里就是告诉大家我们不光可以建立模板,还可以建立嵌套模板~


五、结语

         这里的创建模板和模板方法设计模式很想,但是有一些不同的地方。创建模板我们把相同的内容拿出来,但是没有列出他们的框架,不同的地方我们可以自己任意添加,没有限制。而模板方法呢,在父类中定义了算法的框架和抽象行为,这行抽象的行为告诉你子窗体可以实现什么功能,我想也是这一点上有很明显的不同之处。 如下是模板方法模式的UML图,我们一起回顾一下吧。

这里写图片描述

你可能感兴趣的文章
start kernel 之后没有任何输出与uboot无法将bootargs传入内核的调查方法与解决之道
查看>>
Yocto tips (5): Yocto如何更改source code的下载与git clone地址
查看>>
Yocto tips (7): Yocto Bitbake的clean与cleanall以及cleansstate的区别
查看>>
Yocto tips (19): Yocto SDK Toolchian的使用
查看>>
Yocto i.MX6 (TQIMX6) (04) : 使用mjpg-streamer做一个WebCam Server
查看>>
Nexus 7 Cyanogenmod OS Compile and errors
查看>>
Yocto tips (20): Yocto中qemu模拟器的使用,以zynq Cortex-A9为例
查看>>
打造嵌入式ARM Linux防火墙:1. iptables基础
查看>>
4G模块SIMCOM7100 LTE在ARM Linux下使用PPPD上网
查看>>
为小米4与小米3 Mi3 Mi4编译Cyanogenmod 12.1与13.0 (CM12与CM13) 的步骤以及错误解决
查看>>
原生Android系统的第一次开机google验证的解决
查看>>
S5P4418与S5P6618的Android boot.img的解压与压缩, Sparse ext4文件系统
查看>>
【EVB-335X-II试用体验】 u-boot与kernel的编译以及本地repo的建立
查看>>
【EVB-335X-II试用体验】 上手试用与资源使用
查看>>
【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用
查看>>
<<C++程序设计原理与实践>>粗读--chapter0 chapter1 chapter2
查看>>
<<C++程序设计原理与实践>>粗读--chapter3 chapter4 Chapter5
查看>>
<<C++程序设计原理与实践>>粗读 -- chapter8 Chapter9
查看>>
Linux Qt程序打包成一个可执行文件
查看>>
DragonBoard 410C中的Fastboot与调试串口注意事项
查看>>