嘿嘿,这里就简单的总结一下初步学习webform以及对他的认识,其实你们都认为webform很讨厌,由于好多都是给咱们封装好的,并且如今好多的公司已经慢慢的从中逃离出来选择使用mvc架构,甚至好多的项目选择使用html和ashx来作项目,怎么说那,具体的市面上的状况对于我这个还未踏进社会的小菜鸟来讲,具体的总结不清楚吧,不管怎么样仍是来了解一下webform吧。html
一.了解webformweb
首先咱们在项目中新建一个网站,而后添加一个web窗体,而后咱们会看到以下所示:sql
上面一个是aspx类,一个是aspx.cs类,而aspx.cs类是前台的类,帮助咱们呈现页面的,由上面的截图可知,咱们的前台类继承了page类,而page类继承了IHttpHandler接口,咱们在前面的学习中能够知道,只要实现了IHttpHanlder接口的类都会存在一个方法,即ProcessRequest(),而该方法在这里是一个虚方法,那么它是能够重写的。数据库
下面就来讲一下前台类,首先咱们打开前台类看第一行就看到了如上所示的一行代码,而Language指的是咱们开发的语言,AutoEventWireup是指页面可执行事件,CodeFile指的是可执行代码,Inberits是继承的意思,由此可知:在这里咱们的前台类继承了咱们的后台类。小程序
在这里咱们的前台类其实就是一个html标签添加一个runat=server输出,那么他就再也不是一个html页面即改变成为一个服务器控件,而控件的本质其实就是一个对象。这里咱们首先要了解到这里。学习过继承关系咱们知道,父类的属性或者方法在子类里面咱们可使用,可是转过来父类使用子类的属性或者方法固然在继承的关子中是不可能事件,转回来讲,在这里仍然是在前台类的标签里面添加runat=server便可实现,.Net框架会帮助咱们隐式建立对象,在这里咱们看不到,可是能够借助微软内部的一个工具是能够查看到的。服务器
二.登陆实例以下:架构
public partial class fmLogin : System.Web.UI.Page { UsermessBll bll = new UsermessBll(); protected void Page_Load(object sender, EventArgs e) { if (Request.HttpMethod == "POST") { string context = this.txtname.Value; //获取txtname的值 string pwd = this.txtpwd.Value; //获取txtpwd的值 if (bll.GetLogin(context, pwd)) { Response.Write("<script>alert('登录成功')</script>"); } else { Response.Write("<script>alert('登录失败')</script>"); } } else { } } }
public class UsermessBll { UsermessDal dal = new UsermessDal(); public bool GetLogin(string context,string pwd) { List<UsermessModel> list = dal.GetLogin(); UsermessModel model = list.SingleOrDefault(i=>i.UserName==context||i.Email==context||i.TelPhone==context); //使用LinQ表达式判断使用其中一个帐号登陆便可,这是我以前写的登陆不一样之处,其实感受使用这个理解上更加容易 if (!model.Equals(null)) //输入的帐号与读取的帐号通过选择以后若是为空则不存在此用户名 { if (!model.Pwd.Equals(null)) //输入的帐号存在,而输入的密码与读取的密码通过选择以后若是为空则仍然返回一个false { return true; } else { return false; } } else { return false; } } }
public class UsermessDal { public List<UsermessModel> GetLogin() { string sql = "select * from Usermess"; SqlDataReader reader = SQLHelper.ExecuteReader(sql,CommandType.Text); List<UsermessModel> list=new List<UsermessModel> (); //定义一个集合 while (reader.Read()) { UsermessModel model = new UsermessModel(); //实例化对象,给读取的值赋值给model model.Id = Guid.Parse(reader[0].ToString()); model.UserName = reader[1].ToString(); model.Email = reader[2].ToString(); model.TelPhone = reader[3].ToString(); model.Pwd = reader[4].ToString(); list.Add(model); } return list; } }
上面是使用webform建立的一个登录小程序的代码,其实这写的程序和以前仍是有所差异的,首先说在获取用户名或者密码时间是使用的this.(id值).Value实现的,而以前学习的ashx是使用context.Request.Form["(name值)"]或者context.Request.QueryString["(name值)"]来获取的;还有就是咱们这里在dal层写的方法有所不一样,并无经过数据库语句来判断,而是在bll层使用LinQ来判断,这就是此次写的登陆小程序和以前不一样之处,须要学习的地方。
另外想说的是Guid,咱们须要注意转换的方法,若是想建立一个Guid变量,那么就须要使用Guid a=Guid.NewGuid()便可,而其余类型转换为Guid类型的值就如上dal层的转换方式。mvc
咱们来看一下运行时间的前台代码和以前个人前台页面的区别:框架
看一下上面的图咱们知道使用控件时间还会生成一些ViewState,很是浪费资源,固然这只是其中的一点,另外就是好多的类都封装起来,使咱们这些初学者入门容易,可是提升起来仍是不知道从哪里开始的,控制不是很灵活,服务器控件控制起来不是很容易的,简单的我就知道这些吧,具体的我也能够说不是很懂···工具
好啦,今天就写到这里,很糟糕的事在我身上发生了,我写好这篇博客后没有及时保存,而后网页跳转就致使找不到写事后的博客,虽然使用了本地自动保存,可是仍然没有结果,非常失望哦,因此只得从新再来,终于写完了,要睡觉啦,嘿嘿。