自学.NET之路-C#编程之基础总结

时间:2019-05-14 19:29:07下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《自学.NET之路-C#编程之基础总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《自学.NET之路-C#编程之基础总结》。

第一篇:自学.NET之路-C#编程之基础总结

.NetFramework简介

.netframework运行于操作系统之上,提供良好的跨语言特性。

.netframework包含两个内容:公共语言运行时(CLR)和类库集(FCL)

MSIL微软中间语言。当编译.net支持的语言编写的代码的时候,输出的代码为MSIL

CLR又包含:通用语言规范(CLS:保证语言互操作性的一组规则)和公共类型系统(CTS:包含了.net支持的各语言间兼容的数据类型和功能)

C#中的变量和常量

C#中的基本数据类型:

值类型和引用类型

值类型:简单类型、结构类型和枚举类型。

简单类型:整数类型、浮点类型、小数类型(decimal)和布尔类型等

sbyte是有符号的,相当java的byte型,范围-128~127

C#中byte是无符号的,范围0~255

变量命名方法:

帕斯卡命名法和骆驼命名法

帕斯卡命名法:如果有多个单词组成,每个单词首字母大写

骆驼命名法:如果有多个单词组成,第一个单词全部小写,后面的单词大写

C#中的常量:const与readonly两种

const声明的常量:叫静态常量,必须声明时就初始化,且只能用常数值初始化

readonly声明的常量:叫动态常量,可以在声明时不初始化,只能在构造函数中初始化,但必须每个构造函数中都要初始化;而且可以使用变量值初始化

class Test

{

constfloat PI = 3.1416f;//常量命名:全部大写

readonly float G;

public Test()

{

G = 9.80F;

}

public Test(float g)//每个构造函数中都要初始化;而且可以使用变量值初始化{

G = g;

}

}

C#中的装箱和拆箱

装箱:值类型转换成有引用类型

拆箱:引用类型转换成值类型

值类型:存在栈中

引用类型:在堆中存放对象的地址(即引用),对象本身存放在栈中

拆装箱允许值类型和引用类型相互处理

C#语法

Switch()括号中可以是int ,char和string ,switch语句中的case语句冒号后什么都不写,可以不写break,其他情况一定要写break,否则报错

数组:五种声明方式

int []array;

array = new int[2];

//第二种声明方式

int []array1 = new int[2];

//第三种声明方式

int []array2 = {1,2,3};

//第四种声明方式

int []array3 = new int[]{1,2,3};

//第五种声明方式

int []array4 = new int[3]{1,2,3};

//数组大小也可以是变量

int count = 3;

int []arr = new int[count];

枚举:用有意义的字符去访问数据

public enum Contry:long//指定枚举类型,必须是整型,不写为int型

{

Pacific,//第一个未付值,默认为零

China=1860,Japan,US=1901,Canada

}

C#中的面向对象

析构函数:函数名与构造函数名一样,~函数名(),不接受参数,由垃圾回收器自动调用(GC.Collect()调用垃圾回收器)

virtual关键字:C#中,子类要重写父类的方法,必须把父类的方法标识为virtual(虚拟的),同时重写方法用override修饰

new 关键字:new关键字:在子类中定义的一个和父类方法签名一样,但是个全新的方法。并非重写父类的方法。

base关键字:用base关键字调用父类的方法

访问修饰符:

public 公有的,internal 在一个项目中的,protected有父子关系的类,private仅所属类的成员

注意:如果有一个类既继承类又实现接口,类名要写在接口名前面。

属性,索引器,委托,事件

属性:访问修饰一般为public,首字母大写。属性内有get和set访问器,get内必须要有return,set内有value关键字,代表从外部接受的值。

索引器:索引器的作用:像处理数组一样去处理类的对象。

public class Student

{

private string []obj=new string[10];

//this关键字在这里代表每一个类的对象,[]中整数是指通过下标访问

public string this[int index]//此是可以通过索引号去访问每一个类的成员{

get

{

return obj[index];

}

set

{

if(value!=null)

obj[index]=value;

}

}

static void Main(string []args)

{

Student stucollection=new Student();

stucollection[0]=“柯南”;

stucollection[1]=“小五郎”;

stucollection[5]=“怪盗基德”;

}

}

委托:相当于函数指针,可使程序在运行是再指定具体要运行的方法。

(1)定义委托:Public delegate int Call()

(2)实例化委托:objcall=new Call(方法名)

(3)调用委托:objcall();

事件:事件实际上是一种特殊的委托,委托每次只能指向一个方法,而事件可以指向多个方法

(1)定义一个委托public delegate void delegateMe();

(2)定义一个事件 private event delegate eventMe;

(3)订阅事件eventMe+=new delegateMe(方法名1());

eventMe+=new delegateMe(方法名2());

(4)引发事件if(condition)theneventMe();

多线程

创建线程实例:

Thread obj=new Thread(new ThreadStart(方法名称))

开始:Start();

休眠:Sleep();

终止:Abort();

挂起:Suspend();

恢复:Resume();

当前线程:Thread.CurrentThread

ThreadPriority枚举值用来指定调度线程的优先级(共5级)

lock关键字

C#中通过lock关键字提供同步

线程同步:确保不同的线程对共享资源进行访问时,每次只有一个线程访问资源。Lock(this)

{

For(int i=0;i<10;i++)

{

//语句;

}

}

数组集合对象

Array: Array和数组很相似,还可以相互转化和拷贝,很多方法都是是通用,可以用Array的静态方法对数组实现反转,排序,这是数组本身无法做到的usingsystem.Array;

Array ar=Array.CreateInstance(typeof(int),5);//创建一个Array的实例

ar.SetValue(12,0);//赋值

Array.Reverse(ar);// 反转

Array.Sort(ar);// 排序

ArrayList:最常用的集合之一.集合的好处是在不知道数据大小时,可以实现容量自动增长,而数组做不到.Add()添加元素

Remove(位置)移除元素

ArrayList al=new ArrayList();

//如果要遍历集合元素,//方法一:

//将集合中的数拷贝到数组中

object []temp=al.ToArray();

foreach(object t in temp)

{

Console.WriteLine(t);

}

//方法二,使用迭代器

IEnumerator ie=al.GetEnumerator();

while(ie.MoveNext())

{

Console.WriteLine(ie.Current);

}

HashTable:以键值对的形式保存值

Hashtable hash=new Hashtable(4);

hash.Add(“中国”,1860);

hash.Add(“德国”,1940);

Console.WriteLine(hash[“中国”].ToString());通过key获得value

SortedList :是 Hashtable 和 Array 的混合能存放键值对,类似Hashtable

能通过自身提供的方法通过索引直接遍历,类似于Array objsortlist.GetKey(i)方法获得键

objsortlist.GetByIndex(i)方法获得值

青鸟BBSHTML七种加密解密

第二篇:c#基础总结

【1】面向对象程序设计语言的三大特点是什么?答:【23】Main函数特点?答:1)Main方法是C#程序的限定,默认的为private【2】三种命名法则的特点?答:匈牙利命名法:在变限定符,返回类型为void或int类型,Main方法必须是静态方法;3)一个类或结构只能有一个有效的入驼表示法:一个标示符用若干个有意义的英语单词或口点函数;4)main方法必须定义在某一个类中。缩写组成,第一个单词首字母小写,后边的首字母大【24】多态(重写、隐藏)

写;Pascal表示法:与骆驼表示法类似,但是第一个 单词的首字母也需要大写。【3】C#注释的三种形式特点?答1)单行注释:// 2)class A /// {public virtual void F()【4】引用类型和值类型的数据类型? {Console.WriteLine(“A.F”);}} abstract class B:A(1)int valOne = 0;{public abstract override void F();}int valTwo = valOne;答:abstract override 是不可以一起修饰 int valThree = 333;例:在下面的例子里 valTwo = 333;TestValueRefRef1 = new TestValueRef();class A TestValueRefRef2 = Ref1;{public A(){PrintFields();} Ref2.value = 444;public virtual void PrintFields(){} } Console.WriteLine(“values:{0},{1}”, Ref1.value, class B:A Ref2.value);{int x=1;int y;public B(){y=-1;} Console.WriteLine(“values:{0}, {1},{2}”,valOne, public override void valTwo,valThree);PrintFields(){Console.WriteLine(“x={0},y={1}”,答:输出结果:values:444,444 x,y);} 当使用new B()创建B的实例时,产生什么输出?(2)public class EnumTest答:x=1,y=0 { enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};分析:执行new B()时,由于B继承自A,所以会调用static void Main()A的构造函数,并执行其中的PrintFields()方法,由{int x=(int)Days.Sun;inty=(int)Days.Fri;于该方法为虚方法,在继承类中被重写,所以,将执Console.WriteLine(“Sun = {0}”, x);行B中的PrintFields()方法。此时,将在DOS界面Console.WriteLine(“Fri = {0}”, y);}} 上输出“x=1,y=0”,然后,在运行B的构造函数中的答:输出结果:Sun = 2Fri = 7 y=-1。(建议同学们将此程序放入到代码中,设置断点【5】枚举类型的字段和关联值?枚举类型有三个要看执行过程。)

【25】什么是多态对象?答:用基类类名声明,但是特性 修饰符 enum 枚举名 : 基础类型 {枚举成员声明,枚举成员声明,„„,枚举成员声明}默认的基础函数来实例化的对象。这类对象的主要用途是引发多类型为int;关联值:如果没有被声明,默认为0。态,为了将它们和一般的对象(声明和创建都使用同【6】强制类型转换(例:若有double f=2.7;int 一个类型名的对象)加以区别、揭示它们的特点和用2)将源类型的对象途,这种形态的对象称为多态对象。转换成为目的类型的对象 【26】接口的特点。答:接口只能包含抽象方法,不【7】运算符&和&&的区别?答:条件“与”运算符(&&)没有访问修饰符,接口成员必须是方法属性事件或者时才计算第二个操作数。而&需要计算所有操作数,索引器不能包含常数字段运算符也不能有静态成员。并且优先级高于&& 【27】委托和事件,【8】装箱和拆箱的概念?答:装箱就是把一个值类型委托的定义修饰符 delegate 返回类型 委托类型名(参数列表); 【9】for循环和if语句联合使用的程序分析,for(;;)eg: public delegate int DelegateClass(stringinfo);

和continue的区别?答:break跳出循委托的创建(实例化)委托对象 = new 委托名(关联方法); 【11】命名空间的特点答:它提供一种命名机制,是eg: DelegateClass obj=new DelegateClass(MethodA);

合方式无关,不能表明源文件的存取方式,命名空间DelegateClass obj=MethodA;//隐式创建和初是按层次组织的。始化(不用new)【12】数组元素的的复制和读值 例:分析下列语句: int[3]{5,6,2},new int[5]{6,9,7,8,3},new Hello(string target);} int[2]{3,2}};myArray3[2][2]的值是(D)A)9;B)2;该语句的作用是:在TestCS 命名空间中定义了了一C)6;D)越界 个名为Hello 的委托类型;

【13】类和对象的关系?答:类是对象的抽象,对象【28】Windows窗体中Button按钮触发的事件是什【14】关键字this和base的区别?答:base指代基【29】Windows窗体中控件的标识符如何修改?答:【15】关键字new、using的多种用法?答:new修饰【30】如何修改Windows窗体的启动窗体?答:修改被重写,但new修饰符可终止这一特性;向下传播; 实例化一个对象。Using:导入命名空间;自动释放【31】要使用SQL Server需要使用哪两个命名空间? Using代码框里的资源。【16】索引器的特点?答:索引器允许重载;字符串Using System.Date.SqlClient: 【32】什么是DataSet、DataAdapter?两者联系?答:过签名标识;通过元素访问来访问;必须为实例成员;索引器的get访问器具有与索引器相同的形参表;除DataAdapter:数据适配器,数据库与DataSet间的桥value参数外,索引器的set访问器还具有与索引器梁,把数据库中数据下载到DataSet或回传回去。相同的形参表。【33】用户登录和密码修改(带数据库)【17】静态数据成员特点?答:为所有类所共享,区用户登录 【18】构造函数的特点?答:(1)构造函数名与类名UserName='“ + txtUsername.Text.Trim().ToLower()+ ”' and UserPwd='“ + txtPassword.Text.Trim()+ 【19】析构函数的特点?答:(1)析构函数名是在类”'“;if(OperateDB.ExecuteReader(sql))型(默认为空)和修饰符;(3)析构函数不能被重载。{username = txtUsername.Text.Trim().ToLower();【20】什么是方法的重载?重载的特点是什么?答: frmMain frm = new frmMain();frm.Show();this.Hide();} 定义一组方法。重载的特点:1)位于同一类中;2)else

方法名相同;3)方法参考列表不同,包括参数个数不{MessageBox.Show(”用户名或密码错误“, ”出错了“, 同和参数类型不同;4)与方法返回值和修饰符没关系。MessageBoxButtons.OK, MessageBoxIcon.Error);} 【21】虚函数的特点?答:1)虚方法前不允许有修改密码: 修饰符;2)虚方法不能是私有的,因此不能使用private修饰符; where UserName='” + frmLogin.username + “' and 【22】抽象类和抽象方法的主要特点?答:抽象类:UserPwd='” + txtOldPwd.Text.Trim()+ “'”;(或者if(OperateDB.ExecuteReader(sqlCheckPwd))说,不能产生对象。但是,它可以有构造函数。(2){string sql = “update UserInfo set UserPwd='” 设计abstract类的目的是为了被继承。抽象方法:是+ txtNewPwd.Text.Trim()+ “' where UserName='” + 不完整的,不能执行的。frmLogin.username + “'”;

if(OperateDB.ExecuteNonQuery(sql)== 1)

{MessageBox.Show(“密码修改成功!”);}else

{ MessageBox.Show(“密码修改失败!”);}}

else{MessageBox.Show(“旧密码不正确!”);}

【34】抽象类定义和继承使用

特点:1.没有被完整定义,因而它不能用来实例化,或者说,不能产生对象。(但是,它可以有构造函数。)2.设计abstract类的目的是为了被继承。public abstract class Employee{public virtual void Pay(){ }

public abstract void CalculatePay();} public class HourlyEmployee: Employee

{public override void Pay(){CalculatePay();}public override void CalculatePay(){ }} 【35】接口及继承类的使用

特定功能的抽象成员的集合。一个类可以继承多个接口,从而获得多个行为的描述,将它们组合成新的功能并在类中实现。继承类中必须实现接口中的所有抽象成员。

定义接口的格式:修饰符 interface 接口名:基接口列表 {接口体} 其中,接口体的声明可以包括:接口方法声明;接口属性声明;接口事件声明;接口索引器声明

public delegate void

StringListEvent(IStringList sender);public interface IStringList{ void Add(string s);//方法int Count{get;}//属性event StringListEvent Changed;//事件string this[int index]{get;set;}//索引器} 【编程题例题】

定义一MobilePhone类,包括属性成员——网络类型(NetworkType),字段成员——屏幕尺寸(screenSize)、手机品牌(brand),手机型号

(brandModel),公共方法成员——Open、Close。其中screenSize为单位是英寸的双精度数,brand为字符串,NetworkType只能是“GSM”或“CDMA”字符串。要求:(1)在此类中包含构造函数,构造函数用于对数据(屏幕尺寸、手机品牌和手机型号)进行初始化。(2)公共成员方法中输出相应提示信息(参见(3)中的输出结果格式)。(3)写一测试类,在类中实例化一MobilePhone对象,最后能在DOS界面下显示如下结果:诺基亚N81(屏幕尺寸2.0英寸),是一款GSM手机。手机关机了。using System;

public enum NetworkType {GSM,CDMA,}

public class MobilePhone {public double screenSize;public string brand;

public string brandModel;

public NetworkType networkType;public NetworkType NetworkType{get { return networkType;}}

public MobilePhone(double ss, string bra, string bm, NetworkType nt){screenSize = ss;brand = bra;brandModel = bm;networkType = nt;}public void Open()

{Console.WriteLine(“{0}{1}(屏幕尺寸{2}英寸),是一款{3}手机.”,brand,brandModel,screenSize.ToString(“.0”), networkType);}

public void Close()

{Console.WriteLine(“手机关机了。”);} }

public class Test

{public static void Main()

{MobilePhone mp = new MobilePhone(2.0, “诺基亚”, “N81”, NetworkType.GSM);mp.Open();mp.Close();

System.Console.ReadLine();} }

【例】写一名为Desk的类,包含两个字段Length(双精度类型)、Height(双精度类型)。再写一继承类ComputerDesk类。ComputerDesk类除了有Length和Height外,还有KeyboardTray(字符串类型)。Public class desk {double length;double height;}

Public class computerdesk:desk {string keyboardtray}

第三篇:C# .net学习进程(个人总结)

第一步 掌握一门.NET面向对象语言,C#。

绝不提倡在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET。ASP.NET是一个全面向对象的技术,不懂OO,那绝对学不下去!

第二步 对.NET work类库有一定的了解

可以通过开发Windows Form应用程序来学习.NET work。ASP.NET是建构在.NET work之上的技术,你对.NET work了解得越深,学习ASP.NET就越快。

举个例子:下面简单列出几个对掌握ASP.NET非常重要的概念:

对象的内存模型,委托,事件,多线程,程序集和应用程序域,安全模型

.NET work当然还有许多其它的东西,但不理解与把握清楚上述这些东西,是很难真正把握ASP.NET的。

出于急迫的心情与现实的考虑,不少人没有扎实的面向对象基础就想直接学习ASP.NET,其结果只能是欲速则不达。

在具备了OO基础之后,以下是具体的学习ASP.NET技术步骤。

第一步:学习HTML与CSS 这并不需要去学一大堆的诸如Dreamweaver,Firework之类的各种网页设计工具,关键是理解HTML网页嵌套的block结构

与CSS的box模型。许多ASP.NET控件最后都必须转化为HTML。而且,div+CSS是当前主流的网页布局模型。学习这部分时,关键在于理解概念,而不需要将精力花在美化页面的许多技巧上,那是网站美工的工作,不是程序员的工作。

第二步:学习javascript。

javascript不是Java,它主要运行于浏览器端。可以完成许多工作,功能也很强大:比如它将客户端网页中的HTML元素

看成一棵树,可以编写代码访问并修改树节点,动态生成新的HTML代码,从而达到动态修改网页显示特性的目的。

Java在目前的网站开发中用得很多,非常重要。另外,它也是目前非常流行的AJAX技术的基础。

第三步:学习计算机网络原理

找一本大学<计算机网络>教材,重点看看它的有关互联网的部分,了解一些域名解析和HTTP协议等知识。这是进行互 联网开发的理论基础。

第四步:学习ASP.NET表示层技术,会设计Web页面

需要结合先前打好的面向对象技术的基础,至少掌握以下内容:

(1)各种Web控件的使用方法,(2)理解信息在网页中的传送方式,比如,ViewState,Session等的使用。

(3)ASP.NET应用程序与网页的生命周期,以及相关对象(比如httpcontext,response,request)的用途。

(4)ASP.NET实现事件驱动的内幕

(5)自定义用户控件

再次强调一下,没有OO基础,很难掌握上述技术,就只能被这些东东牵着鼻子走了,会很被动。

第五步 掌握数据库技术

具体地说,要学习以下内容:

(1)学会使用SQL Server 2005:不要求精通它的各种工具与管理配置技术,但至少知道如何连接,如何建表,如何

创建存储过程

(2)学习ADO.NET,掌握使用代码人工访问数据库(别用VS2005的向 导)的方法

(3)学习数据绑定控件的使用

第六步 理解多层架构

这时,先前在几个学习阶段涉及到的程序集与应用程序域等就派上用场了,现在,网站架构大多采用多层架构:表示层、业务逻辑层、数据存取层以及数据库本身。可以先上网找一此多层架构的资料看,再找一个现成的比较复杂的开源ASP.NET 项目分析一下其架构就差不多了。基本上都是一个套路,到处应用。有的朋友问:学习架构是不是必须学习设计模式。我的看法是:不必!当然,你如果学习过设计模式,那当然更好。但在

实际开发中,如果只想着机械地套用某种模式,反而起不到好的结果。我的观点:在学习设计模式时要多思多悟,其思想 就会渐渐地融入你的大脑,在真实的设计实践中,忘掉所有的写在书上的模式,一切从实际出发,相信你的直觉,只要达

到设计要求的方案就是可行的方案,事实上,你这样做了之后,回过头来再看,会发现你的设计往往暗合设计模式的理论。

第七步 学习XML与Web Service 先了解XML的基础知识,找本讲XML的书看一下就差不多了,然后,再学习Web Service。Web Service其实可类比为远程

方法调用(以XML格式表达的调用信息)。学到了这里,如果你还有兴趣,不妨再去看看SOA,不过SOA的资料都是理论与概

念,看起来比较郁闷,而且离实际开发可能比较远。所以,这是可选项。

第八步 学习AJAX 学习AJAX的主要目的是创建具有更丰富特性的Web表示层,而经过前面七步的学习,到此再学习AJAX已水到渠成,所有 的基础都已具备,不会有太大的问题了。

在基础未具备的前提下直接学AJAX,就象“浮沙之上筑高台”,所以,将AJAX的学习次序安排在这里。

第九步 学习RIA技术

RIA:Rich internet application,可看成是将C/S与B/S优点合二为一的尝试。就具体技术来说,主要指微软的

Silverlight(WPF_E),毕竟前头一路行来都是微软路线。

以上为初学者接触.NET技术的一个比较完整的学习步骤,个人能力有限只限于爱好软件编程和.NET、c#、asp.net,ado.net、asp和数据库的人士参考!

第四篇:net(c#)跨页面传值方法总结

.net(c#)跨页面传值方法总结(2011-04-25 11:03:24)转载标签: it 方式1:

在接收页 的html代码里加上一行: <%@ Reference Page = “WebForm1.aspx” %>

WebForm1 fp=(WebForm1)Context.Handler;this.TextBox1.Text=fp.name;//name 是第一页的public变量

Context 提供对整个当前上下文(包括请求对象)的访问。您可以使用此类共享页之间的信息。

方式2:GET方式 在发送页

public int sum=0;

int i =int.Parse(this.TextBox1.Text)*2;

Server.Transfer(“WebForm2.aspx?sum=”+i);

接收页

this.TextBox1.Text=Request[“sum”].ToString();or this.TextBox1.Text=Request.Params[“sum”].ToString();this.TextBox1.Text=Request.QueryString[“sum”];

方法3:全局变量

发送页:

Application[“sum”]=this.TextBox1.Text;Server.Transfer(“WebForm2.aspx”);

接收页:

this.TextBox1.Text=(string)Application[“sum”];

Application实质上是整个虚拟目录中所有文件的集合,如果想在整个应用范围内使用某个变量值,Application对象将是最佳的选择

方法4:

发送页:

1.定义静态变量: public static string str=“";2.str=this.TextBox1.Text;Server.Transfer(”webform2.aspx“);接收页:

1.引入第一页的命名空间:using WebApplication1;2 this.TextBox1.Text=WebForm1.str;

另外三种最常见的传值

ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式。然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过 POST方法很容易的把一个值或多个值从一个页面传送到另一个页面(request()/request.form()/request.querystring()),用同样的方法在ASP.NET中实现有点麻烦。在这里,通过其他方式来解决这种情形。ASP.NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应的值,再一种是通过session变量来传送相应的值,还有就是通过 Server.Transfer方法来实现。

一、使用Querystring

Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象。如果你想传递一个安全性不是那么太重要或者是一个简单的数值时,用此方法最好不过了。下面通过一个小例子来完成传值工作,步骤如下:

1、创建一个web form

2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2

3、为button按钮创建click事件

代码如下:

private void button_click(object sender,System.EventArgs e){ string url;url=”webform2.aspx?name=“+TextBox1.Text + ”&Email=“+TextBox2.Text;Response.Redirect(url);}

4、新建一个目标页面命名为webform2

5、在webform2中放置两个Label1,Label2 在webform2的Page_Load中添加如下代码:

private void Page_Load(object sender,System.EventArgs e){ Label1.Text=Request.QueryString[”name“];Label2.Text=Request.QueryString[”Email“];} 运行,即可看到传递后的结果了。

二、使用Session变量

使用Session变量传值是一种最常见的方式了,此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失。举个例子看看:

1、创建一个web form

2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2

3、为button按钮创建click事件 代码如下:

private void button_click(object sender,System.EventArgs e){ Session[”Name“]=TextBox1.Text;Session[”Email“]=TextBox2.Text;Response.Redirect(”webform2.aspx“);}

4、新建一个目标页面命名为webform2

5、在webform2中放置两个Label1,Label2 在webform2的Page_Load中添加如下代码:

private void Page_Load(object sender,System.EventArgs e){ Label1.Text=Session[”Name“].ToString();Label2.Text=Session[”Email“].ToString();Session.Remove(”Name“);Session.Remove(”Email“);} 运行,即可看到传递后的结果了。

三、使用Server.Transfer

虽然这种方法有点复杂,但也不失为一种在页面传值的方式。举个例子看看:

1、创建一个web form

2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2

3、为button按钮创建click事件 代码如下:

private void(object sender,System.EventArgs e){ Server.Transfer(”webform2.aspx“);}

4、创建过程来返回TextBox1,TextBox2控件的值代码如下: public string Name { get {return TextBox1.Text;} } public string Email { get{return TextBox2.Text;} }

5、新建一个目标页面命名为webform2

6、在webform2中放置两个Label1,Label2 在webform2的Page_Load中添加如下代码:

private void Page_load(object sender,System.EventArgs e){ //创建webform的实例 webform1 wf1;//获得实例化的句柄

wf1=(webform1)Context.Handler;Label1.Text=wf1.Name;Label2.Text=wf1.Email;}

常见的就是这三种方法。

上面方法一中的传值问题

问:在asp中页面间传值使用url?方式 例如 ”index.asp?aaa=华东五市+水乡六日游“ 因为字符串”华东五市+水乡六日游“中间有加号,与asp系统字符串连接符关键字冲突,传过去的变量aaa的值就会变成”华东五市“,请问大家有什么解决办法? 解决:

1.server.urlencode(”华东五市+水乡六日游“)

2.URLEncode The URLEncode method applies URL encoding rules, including escape characters, to a specified string.Syntax Server.URLEncode(string)

Parameters string Specifies the string to encode.Example The following script

<%Response.Write(Server.URLEncode(”http://www.xiexiebang.com“))%>

produces the output

http://www.xiexiebang.com

3.index.asp?aaa=华东五市+水乡六日游 4.自己定义一些特殊字符对应 ”+“,”*“,”#“ 例如,Replace(string,”+“,”CODE01“)

然后到另一个页面在用Replace(string,”CODE01“,”+“)换回来即可了 自己定义一些特殊字符对应 ”+“,”*“,”#“ 例如,Replace(string,”+“,”CODE01“)

然后到另一个页面在用Replace(string,”CODE01“,”+“)换回来即可了

在页面间传递引用

有不少文章讨论怎么在两个页面间传递引用,如果你页面上的对象设置为public的话,你就可以传递他们在页面间。

在页面间传递是使用

Server.Transfer替代Response.Redirect就可以。例子:

-------------In Page A codebehind:

public class PageA : System.Web.UI.Page { public System.Web.UI.WebControls.TextBox TextBox1;public System.Web.UI.WebControls.Button Button1;

// standard page code(Page_Load, etc)//....//....private void Button1_Click(object sender, System.EventArgs e){ Server.Transfer(”b.aspx“);} }

-------------In Page B codebehind:

private void Page_Load(object sender, System.EventArgs e){ PageA myAPage = Context.Handler as PageA;string textboxFromPageA = myAPage.TextBox1.Text;}

因为当使用Server.Transfer时所有的对象(A and B)在服务器上当时都是活动的,你可以引用任何东西。

稍微修改一下b.aspx(uestc95 提供):

Page myPage =(Page)Context.Handler;string textboxFromPageA;textboxFromPageA =((TextBox)myPage.FindControl(”TextBox1“)).Text;

这样在A.aspx中就可以正常的使用protected类型的了

###

1.使用QueryString变量

QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子: a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e){ string s_url;s_url = ”b.aspx?name=“ + Label1.Text;Response.Redirect(s_url);}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e){ Label2.Text = Request.QueryString[”name“];}

2.使用Application 对象变量

Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e){ Application[”name“] = Label1.Text;Server.Transfer(”b.aspx“);}

b.aspx中C#代码 private void Page_Load(object sender, EventArgs e){ string name;Application.Lock();name = Application[”name“].ToString();Application.UnLock();}

3.使用Session变量

想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e){ Session[”name“] = Label.Text;}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e){ string name;name = Session[”name“].ToString();}

4.使用Cookie对象变量

这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e){ HttpCookie cookie_name = new HttpCookie(”name“);cookie_name.Value = Label1.Text;Reponse.AppendCookie(cookie_name);Server.Transfer(”b.aspx“);}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e){ string name;name = Request.Cookie[”name“].Value.ToString();}

5.使用Server.Transfer方法

这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。a.aspx的C#代码 public string Name { get{ return Label1.Text;} } private void Button1_Click(object sender, System.EventArgs e){ Server.Transfer(”b.aspx");}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e){ a newWeb;//实例a窗体

newWeb =(source)Context.Handler;string name;

第五篇:第二阶段WEB开发基础学习总结

WEB开发基础学习总结

第二阶段任务:学习掌握HTML、CSS、JavaScript等与web开发相关的基础知识。在第二阶段的学习中,主要都是针对web开发基础的知识,其中html用于来表现网页的结构与内容,css用来控制页面的外观和表现,javascript用来控制页面的行为。其中分别针对每一部分分别总结如下:

HTML的学习总结:

(1)、HTML、XHTML的不同:

①XHTML中属性名称必须小写;

②XHTML属性值必须加引号 ③XHTML属性不能简写;

④XHTML在属性中增加了ID属性,它可以取代name的功能; ⑤XHTML DTD 定义了强制使用的 HTML 元素。

总的来说,XHTML比HTML更加严格与规范。它只着重强调用来表现网站的结构而非样式,样式的内容交由CSS来控制。

(2)、HTML中注释的形式是:,注释部分的内容,将不会显示在网页中。(3)、HTML中的标签有两种形式:

①带结束标记的标签,如:,etc。

②不带结束标记的标签,如:
,


etc。

在标签内部,可以是允许的属性=“值”对出现。最重要的几个标签如下:

下载自学.NET之路-C#编程之基础总结word格式文档
下载自学.NET之路-C#编程之基础总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐