WebForm的初步認識

                嘿嘿,這裏就簡單的總結一下初步學習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,很是浪費資源,固然這只是其中的一點,另外就是好多的類都封裝起來,使咱們這些初學者入門容易,可是提升起來仍是不知道從哪裏開始的,控制不是很靈活,服務器控件控制起來不是很容易的,簡單的我就知道這些吧,具體的我也能夠說不是很懂···工具

           好啦,今天就寫到這裏,很糟糕的事在我身上發生了,我寫好這篇博客後沒有及時保存,而後網頁跳轉就致使找不到寫事後的博客,雖然使用了本地自動保存,可是仍然沒有結果,非常失望哦,因此只得從新再來,終於寫完了,要睡覺啦,嘿嘿。

相關文章
相關標籤/搜索