摘要: 一、浏览器请求页面的简单流程当浏览器请求静态页面时,会发送请求给服务器软件,服务器软件直接去找对应的静态页面,并返回给浏览器。当浏览器请求动态页面时,服务器软件收到请求,发现处理不了.aspx文件,就去映射表当中根据后缀名找对应的处理程序(aspnet_isapi.dll),这个处理程序实现了服务器软件提供的接口,即服务器软件通过接口调用了这个处理程序当中的方法。aspnet_isapi.dll会将请求转交给.Net Framework,由它处理动态页面,创建页面对象,生成相应报文,响应给浏览器。当服务器接收到浏览器的动态页面请求时,去网站的程序集中找对应的类,通过反射的方式创建类的对象,并运 阅读全文
posted @ 2012-03-17 19:21 -------- 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 读取XML文档内信息的操作与写操作类似,首先要加载一个XML文件成为一个可操纵的对象。假设我们有个XML文件叫student.xml。1 XDocument xDoc = XDocument.Load("students.xml");之后要获取根节点1 XElement xeRoot = xDoc.Root;如果我们想取得某一节点的话:1 //根据标签名获取某一个节点2 XElement xe1 = xeRoot.Element("标签名"); 3 //输出节点名4 Console.WriteLine(xe1.Name); 5 //输出节点下所有元素的值 阅读全文
posted @ 2012-03-17 19:16 -------- 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 前几天讲到了子窗体给父窗体传值的问题,在此总结一下。这里就不讨论全局变量和静态变量之类的高耦合方式了,只讨论利用接口传父窗口指针和使用委托这两种耦合度相对较低的方式,具体怎么用看需求,没有哪个好哪个不好。在这个例子中,我们有父窗体Form1和子窗体Form2,里面各有一个的文本框txt1和txt2,各有一个按钮。一、接口法 首先要新建一个.cs文件写一个接口,内容如下:1 public interface ITxt 2 { 3 void setTxt(string txt); 4 }复制代码然后让主窗体Form1实现这个接口,1 void ITxt.setTxt(string txt)... 阅读全文
posted @ 2012-03-17 19:16 -------- 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 1 MailMessage mail = new MailMessage(); 2 mail.From = new MailAddress("发件人邮箱"); 3 mail.To.Add(new MailAddress("收件人邮箱")); 4 mail.Subject = "标题字符串"; 5 mail.Body = "内容字符串"; 6 mail.Attachments.Add(new Attachment(@"附件地址")); 7 SmtpClient sc = new SmtpClien 阅读全文
posted @ 2012-03-17 19:16 -------- 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 1 //计算字符串MD5 2 public static string GetStringMd5(string txt) 3 { 4 MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); 5 string result = ""; 6 byte[] bytes = Encoding.ASCII.GetBytes(txt); 7 byte[] cryptBytes = md5.ComputeHash(bytes); 8 foreach (byte item in cryp... 阅读全文
posted @ 2012-03-17 19:16 -------- 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 要把一个复杂对象弄成一个文件发给别人的话,自己定义存储格式要费很大的周折,不过微软早就帮咱们把算法写好了,只要套用一个函数就OK了!越来越觉得C#便捷了!序列化: 1 //1.序列化: 2 //给所有要序列化的类、父类、成员的类添加[Serializable]特性 3 //创建写的文件流 4 FileStream fs = File.Create("person.bin"); 5 using (fs) 6 { 7 //创建一个序列化器 8 BinaryFormatter bf = new BinaryFormatter(); 9 //执行序列化10 ... 阅读全文
posted @ 2012-03-17 19:15 -------- 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 事件,就是封装后的委托,如果把委托看成字段,那事件就是属性了,其实就是把委托做了个阉割而已,阉割后的委托只能+=和-=。这次要实现的效果是,自己定义一个控件,上面有两个textbox,分别叫txtLoginId和txtLoginPwd,还有个叫btmLogin的按钮,控件的用途是让用户输入的用户名和密码,然后点登陆。如果用户名和密码正确,登陆成功,则两个textbox变为绿色,失败则变为红色。首先建立一个用户自定义控件,把零部件拖进去。然后建立一个客户程序(主程序)的窗口Form1,把刚定义好的这个自定义控件拖进去。我们给验证控件的文件起名叫UcLogin.cs。由于程序是在点下按钮时触发的, 阅读全文
posted @ 2012-03-17 19:15 -------- 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 这段代码用于防止用户点“提交”按钮后点了刷新导致重复提交post请求。思路是写session,根据每次Session不同判断是不是重复提交。 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="重复提交.aspx.cs" Inherits="重复提交" %> 2 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ 阅读全文
posted @ 2012-03-17 19:13 -------- 阅读(1425) 评论(0) 推荐(0) 编辑
摘要: 就不解释抽象工厂是什么了,直接上代码:两个具体类: public Department() { Console.WriteLine("创建了一个Department"); } public User() { Console.WriteLine("创建了一个User"); }负责Department的 interface IDepartment { void Insert(Department department); Department GetDepartment(int id); } class AccessDepartment : IDepartm 阅读全文
posted @ 2012-03-17 19:13 -------- 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 花了两天的时间搞的这个,写这个东西目的就是要搞清楚ASP.Net的运作原理。这个山寨服务器的界面很简单,三个文本框,写IP、端口,还有一个显示报文。一个连接按钮。窗体嘛...就叫Form1吧。代码比较冗长...第一步: 1 //搭建好窗口,为了防止意外,先: 2 public Form1() 3 { 4 Control.CheckForIllegalCrossThreadCalls = false; 5 InitializeComponent(); 6 } 7 //全局线程th用于监听,当窗口关闭时, 8 private void Form1_FormClosing(... 阅读全文
posted @ 2012-03-17 19:12 -------- 阅读(291) 评论(1) 推荐(0) 编辑