今天,想在这里和童鞋们分享一下Web实训的学习笔记
一、主题的应用
相信关于主题文件的定义大家一定是很熟悉的了,这里重点分享一下如何应用主题。
1、打开.aspx(前端文件)文件的源码视图,在顶端的页面指令当中添加StylesheetTheme=“主题文件名”。
2、打开.aspx(前端文件)文件的源码视图,在顶端的页面指令当中添加Theme=“主题文件名”。
那么,StylesheetTheme和Theme有什么区别呢:
(1)StylesheetTheme属性的优先级低于页面中对控件的设置,但在设计视图中可以看出来控件的外观设置。
(2)Theme属性的优先级高于页面中对控件的设置,但在设计视图中看不出控件的外观设置。
也就是说,在使用StyleSheetTheme属性时,如果我们还单独对控件设置了属性,那么最终显示的结果会以控件的属性设置为准。而Theme则与之相反,使用Theme属性时,我论我们如何设置控件属性,最终都会以外观文件的设置为准进行显示。
最后源码献上:
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" StylesheetTheme="White"%>
我的主题文件名就是White
二、产生随机验证码(文本验证码和图片验证码)
首先定义一个方法RandomNum(int n) ,n代表验证码的位数,也就是生成几位数。
1、先来定义随机验证码的内容,其内容包括数字(int)、字符(char):
//定义一个包括数字大写英文字母和小写英文字母的字符串 string strchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H"+"I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" +"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
2、通过String.Split()方法将字符串转化为数组,这里的转化规则是按照**‘,’**进行截取,得到字符串数组。**注意:**Split()方法的参数就是截取的依据,并且参数还可以是一个字符数组。
3、定义一个字符串用作返回值来临时储存生成的随机验证码,并返回。
//字符串num返回产生的n位随机验证码
string num = "";
4、未了避免俩次生成的随机数相同,我们还需要定义一个int 型 temp来临时记录上一次的随机数。
//记录上次随机数值,尽量避免产生几个一样的随机数
int temp = 0;
5、实例化用来生成随机数的Random类,为下文生成随机数做准备。
Random rand = new Random();
这个Random类是System命名空间中的类,它依靠时间来生成随机数。它的参数代表了产生随机数的起始值。如果参数为负数,则使用其绝对值。
6、使用循环来生成随机数
for (int i = 1; i < n + 1;i++ )
{
if(temp!=-1)
{
//unchecked关键字用于取消整型算术运算和转换的溢出检查
//DateTime.Ticks 属性获取表示此实例的日期和时间的刻度数
rand = new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
}
//Random.Next方法返回一个小于所指定最大值的非负随机数
int t=rand.Next(62);//数组下标
//判断生成的随机数是否和上次相同,如果相同则再次调用RandomNum()方法生成随机数
if(temp!=-1&&temp==t)
{
return RandomNum(n);
}
temp=t;
num+=array[t];
}
7、我们来解析一下这个循环,循环的次数和随机数的位数是相等的也就是说,生成几位数,循环就运行几次。
循环里又2个判断语句,第一个判断语句是为了保证随机数都为正数,第二个判断语句,是为了判断生成的随机和上一次生成的随机数是否相同,如果相同则再次调用RandomNum()方法来生成新的随机数,如果不同,则执行下面的返回语句。
8、再来讲一下,Random对象的Next()方法,Next()方法的参数便是生成的随机数的最大值。Next()方法的返回值为一个非负随机整数是一个 32 位的整数。
Random.Next方法返回一个小于所指定最大值的非负随机数,这里生成的随机数代表的是arry数组的下标,62,为数组下标的边界。
9、下面讲一下,uncheck(),关键字,它代表取消对整型算术运算和溢出的检查,也就是说整型的位数无论大的多么离谱它都不会报错,但是会截掉高出的位数。
10、下面再来讲一下DateTime、Now、Ticks,DateTime是一个类,Now和Ticks是方法。通过调用DateTime类的Now方法可以获取到当前的系统时间,通过Ticks方法可以获取到当前实例的计数周期。