国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

asp.net高級(jí)圖文詳細(xì)教程(3)-實(shí)戰(zhàn)篇

asp.net高級(jí)圖文詳細(xì)教程(3)-實(shí)戰(zhàn)篇

更新時(shí)間:2022-05-06 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

結(jié)合論壇用戶操作談asp.net表單驗(yàn)證(上)

    有了前面的知識(shí),現(xiàn)在我們要進(jìn)入實(shí)戰(zhàn)。做過asp的朋友都知道表單驗(yàn)證是個(gè)比較頭疼的問題,有經(jīng)驗(yàn)的Web程序員有這么一句話,那就是客戶端不相信服務(wù)器端,服務(wù)器端不相信客戶端。什么意思呢,就是說做表單驗(yàn)證時(shí)服務(wù)器端程序不能假定客戶端程序是正確的而不加檢測(cè),這樣如果客戶端關(guān)閉javascript就可能造成出錯(cuò),而如果只做服務(wù)器端檢測(cè),那么需要提交到服務(wù)器端再返回,那么效率會(huì)大打折扣,并且對(duì)于用戶極不方便。所以只能客戶端和服務(wù)器端做兩次驗(yàn)證。現(xiàn)在asp.net提供了新的表單驗(yàn)證機(jī)制,下面我將結(jié)合實(shí)例簡(jiǎn)單講一下,想要了解asp.net提供的幾個(gè)驗(yàn)證webcontrol的詳細(xì)資料,可以參照我的asp+初級(jí)教程。
    在講表單驗(yàn)證以前,先做點(diǎn)準(zhǔn)備工作。前面談到用asp.net開發(fā)需要轉(zhuǎn)換編程思維,也就是用面向?qū)ο蟮乃枷肴タ紤]問題,bbs對(duì)象我們已經(jīng)構(gòu)造好了,現(xiàn)在讓我們來看一下一個(gè)論壇系統(tǒng)中另外一個(gè)很重要的對(duì)象:用戶。可以說,論壇系統(tǒng)的主體是用戶,沒有用戶那也就談不上什么論壇了,所以圍繞用戶的操作很多,比如說添加/刪除用戶,查詢/修改用戶資料等等,有些論壇還有積分機(jī)制,根據(jù)用戶登錄次數(shù)或發(fā)言多少來決定積分,已表明該用戶的活躍程度。那么,我們應(yīng)該如何來構(gòu)造論壇用戶這個(gè)對(duì)象呢?看看

下面的類定義:
namespace MyOwnClass
{
    using System;
    using MyOwnClass ;
    using System.Data.SQL ;
    using System.Web.Util ;

    ////////////////////////////////////////////////////////////////////
    //
    // Class Name :       BBSUser
    //
    // Description:       論壇用戶類,構(gòu)造一個(gè)論壇用戶對(duì)象
    //
    // date:              2000/02/03
    //
    /// ////////////////////////////////////////////////////////////////
    public class BBSUser
    {
        //新建枚舉類型,創(chuàng)建用戶方式,創(chuàng)建還是修改
        public enum CreateType
        {
            Create = 0 ,
            Modify
        }

        //私有成員變量
        private int m_intID ;                //用戶ID
        private string m_strUserName ;            //用戶名
        private string m_strPassword ;            //密碼
        private string m_strEmail ;            //用戶email
        private string m_strHomepage ;            //個(gè)人主頁
        private string m_strSignature ;            //簽名

        //屬性,全部只讀
        public int ID
        {
            get
            {
                return m_intID ;
            }
        }

        public string UserName
        {
            get
            {
                return m_strUserName ;
            }
        }

        public string Password
        {
            get
            {
                return m_strPassword ;
            }
        }

        public string Email
        {
            get
            {
                return m_strEmail ;
            }
        }

        public string Homepage
        {
            get
            {
                return m_strHomepage ;
            }
        }

        public string Signature
        {
            get
            {
                return m_strSignature ;
            }
        }
        //構(gòu)造函數(shù)
        public BBSUser()
        {
            //
            // TODO: Add Constructor Logic here
            //
            m_strUserName = "" ;
            m_strPassword = "" ;
            m_strEmail = "" ;
            m_strHomepage = "" ;
            m_strSignature = "" ;
        }

        //根據(jù)用戶名查詢用戶資料
        public bool GetUser(string a_strUserName)
        {
            //如果用戶名中包含單引號(hào)則拋出一個(gè)異常
            if (a_strUserName.IndexOf("'") != -1)
            {
                throw(new Exception("用戶名包含非法字符")) ;
            }

            bool bExists = false ;

            MyConnection myConn = new MyConnection() ;
            try
            {
                myConn.Open() ;
                SQLCommand myCommand = new SQLCommand() ;
                myCommand.ActiveConnection = myConn ;
                myCommand.CommandText = "select * from BBSUser where

UserName='" + a_strUserName + "'";

                SQLDataReader myReader ;
                myCommand.Execute(out myReader) ;
                
                if (myReader.Read())
                {
                    m_intID = (int)myReader["ID"] ;
                    m_strUserName = myReader["UserName"].ToString() ;
                    m_strPassword = myReader["password"].ToString() ;
                    m_strEmail = myReader["Email"].ToString() ;
                    m_strHomepage = myReader["Homepage"].ToString() ;
                    m_strSignature = myReader["Signature"].ToString() ;
                    bExists = true ;
                }
                else
                {
                    bExists = false ;
                }

                myReader.Close() ;
                myConn.Close() ;
                
            }
            catch(SQLException e)        //如果出現(xiàn)異常
            {

                throw(new Exception("數(shù)據(jù)庫(kù)異常:" + e.Message)) ;
                
            }                    

            //返回結(jié)果
            return bExists ;            
        }

        //重載,根據(jù)用戶ID查找用戶
        public bool GetUser(int a_intUserID)
        {

            bool bExists = false ;

            MyConnection myConn = new MyConnection() ;
            try
            {
                myConn.Open() ;
                SQLCommand myCommand = new SQLCommand() ;
                myCommand.ActiveConnection = myConn ;
                myCommand.CommandText = "select * from BBSUser where id=" +

a_intUserID.ToString() ;

                SQLDataReader myReader ;
                myCommand.Execute(out myReader) ;
                
                if (myReader.Read())
                {
                    m_intID = (int)myReader["ID"] ;
                    m_strUserName = myReader["UserName"].ToString() ;
                    m_strPassword = myReader["password"].ToString() ;
                    m_strEmail = myReader["Email"].ToString() ;
                    m_strHomepage = myReader["Homepage"].ToString() ;
                    m_strSignature = myReader["Signature"].ToString() ;
                    bExists = true ;
                }
                else
                {
                    bExists = false ;
                }

                myReader.Close() ;
                myConn.Close() ;
                
            }
            catch(SQLException e)        //如果出現(xiàn)異常
            {

                throw(new Exception("數(shù)據(jù)庫(kù)異常:" + e.Message)) ;
                
            }                    

            //返回結(jié)果
            return bExists ;            
        }

        //新建用戶
        public void CreateUser(BBSUser.CreateType a_enumCreateType ,string

a_strUserName ,
                                string a_strPassword ,

string a_strEmail ,
                                string a_strHomepage ,

string a_strSignature)
        {
            //監(jiān)測(cè)參數(shù)有效性
            if (a_strUserName.IndexOf("'") != -1 || a_strPassword.IndexOf("'")

!= -1
                || a_strEmail.IndexOf("'") != -1 ||

a_strHomepage.IndexOf("'") != -1
                || a_strSignature.IndexOf("'") != -1)
            {
                throw(new Exception("包含非法字符")) ;
            }

            try
            {
                MyOwnClass.MyConnection myConn = new MyConnection() ;
                SQLCommand myCmd = new SQLCommand() ;

                //判斷是新建用戶還是修改用戶資料
                if (a_enumCreateType == BBSUser.CreateType.Create)
                {
                    myCmd.CommandText = "insert into BBSUser(UserName ,

Password , Email , Homepage , Signature)"
                            + "values('" + a_strUserName + "','"

+ a_strPassword + "','"
                            + a_strEmail + "','" + a_strHomepage

+ "','" + a_strSignature + "')" ;
                }
                else
                {
                    myCmd.CommandText = "update BBSUser set Email='" +

a_strEmail
                        + "' , Homepage='" + a_strHomepage + "' ,

Signature='"
                        + a_strSignature + "' where username='" +

a_strUserName + "'";
                }
                myConn.Open() ;
                myCmd.ActiveConnection = myConn ;
                myCmd.ExecuteNonQuery() ;
                myConn.Close() ;

            }
            catch(SQLException exp)
            {
                throw(new Exception("數(shù)據(jù)庫(kù)出錯(cuò):" + exp.Message)) ;
            }

        }

        //取回密碼
        public void GetPassword(string a_strUserName , string a_strEmail)
        {

            if (GetUser(a_strUserName) && m_strEmail == a_strEmail)
            {
                //發(fā)送Email
                System.Web.Util.MailMessage myMail = new MailMessage() ;
                myMail.From = "lyp@server1.domain" ;
                myMail.Subject = "取回您的密碼" ;
                myMail.Body = "請(qǐng)牢記您的密碼:" + m_strPassword ;
                myMail.To = a_strEmail ;
                SmtpMail.Send(myMail) ;
            }
            else
            {
                throw (new Exception("該用戶不存在")) ;
            }
        }
        
    }
}

    通過前面的學(xué)習(xí),你可能已經(jīng)能夠看懂這個(gè)類定義的大部分內(nèi)容,那些是成員變量,那些是屬性,那些是方法都可以理解了,在這里需要解釋的只有以下兩部分內(nèi)容,首先看這段代碼:
        
public enum CreateType
{
    Create = 0 ,
    Modify
}
    這段代碼的作用是創(chuàng)建BBSUser類的一個(gè)枚舉變量,寫過c程序的朋友很容易理解,建立這個(gè)枚舉變量的作用是簡(jiǎn)化記憶,用容易記憶的名稱代替值,比如上邊這個(gè)定義,當(dāng)在方法CreateUser里作為第一個(gè)參數(shù)時(shí),BBSUser.CreateType.Create實(shí)際的值是0,代表這個(gè)方法的目的是創(chuàng)建用戶,而如果是BBSUser.CreateType.Modify,則代表目的是修改用戶資料。顯而易見,用if (a_enumCreateType == BBSUser.CreateType.Create)這樣的語句比用if (a_intCreateTYpe == 1)更容易記憶,最大限度減少出錯(cuò)的可能。

    另外一個(gè)要解釋的內(nèi)容是:你可能已經(jīng)注意到在類的定義中有兩個(gè) GetUser方法的定義,其作用域和返回值都相同,只是參數(shù)類型不同。沒錯(cuò),這種做法叫重載(override),是并且只能是面向?qū)ο蟪绦蛘Z言實(shí)現(xiàn)多態(tài)性的基本方法,那么這樣做有什么好處呢?就是根據(jù)參數(shù)不同由類自己決定應(yīng)該調(diào)用那個(gè)正確的方法,這樣講可能有些抽象,那么舉個(gè)例子來說吧,這個(gè)GetUser方法的作用是取得用戶資料,那么它可以通過用戶名來取得資料,也可以通過用戶ID來取得,如果不用函數(shù)的重載,那么我們需要建兩個(gè)函數(shù),可能一個(gè)叫GetUserFromName(string a_strName) , 而另一個(gè)是GetUserFormID(int a_intID),在調(diào)用時(shí)
需要判斷一下決定調(diào)用那個(gè)方法,象這樣:
if ( BBSUser.ID != "")
{
  GetUserFromID(BBSUser.ID) ;
}
else if(BBSUser.Name != "")
{
  GetUserFromName(BBSUser.Name) ;
}

    以上兩種方法孰優(yōu)孰劣恐怕已經(jīng)不用我說了吧。
    好了,既然我們已經(jīng)創(chuàng)建好BBSUser對(duì)象,下面就可以利用它來進(jìn)行對(duì)用戶的操作了。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        91欧美一区二区| 亚洲国产精品欧美一二99| 中文字幕中文乱码欧美一区二区| 男人的天堂久久精品| 欧美日韩精品一区视频| 无吗不卡中文字幕| 精品成人a区在线观看| 国产99精品国产| 亚洲免费在线观看视频| 欧美日韩国产影片| 国产精品亚洲一区二区三区在线| 中文字幕亚洲不卡| 欧美日韩精品欧美日韩精品| 久久精品国产一区二区| 欧美激情中文不卡| 欧美三级午夜理伦三级中视频| 视频一区二区中文字幕| 欧美精品一区在线观看| 91在线国内视频| 男女性色大片免费观看一区二区| 国产婷婷色一区二区三区| 色综合天天视频在线观看| 奇米四色…亚洲| 国产精品久久久久久久久图文区| 美女视频黄 久久| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美在线观看一二区| 国精产品一区一区三区mba视频 | 国产亚洲美州欧州综合国| 99久久精品国产导航| 日本成人在线看| 亚洲人成人一区二区在线观看| 欧美精选一区二区| jvid福利写真一区二区三区| 99vv1com这只有精品| 亚洲欧美日韩国产另类专区| 亚洲少妇30p| 日韩一区二区精品葵司在线| 91年精品国产| 成人亚洲精品久久久久软件| 久久精品国产99| 五月天激情小说综合| 国产精品国模大尺度视频| 精品免费国产一区二区三区四区| 欧美日韩一级片在线观看| 91免费视频大全| 99在线精品观看| 国产不卡视频一区二区三区| 国产一区欧美一区| 狠狠色丁香久久婷婷综合_中| 日韩影视精彩在线| 亚洲超碰精品一区二区| 亚洲电影一区二区| 亚洲五码中文字幕| 亚洲国产精品久久人人爱蜜臀| 《视频一区视频二区| 国产精品国模大尺度视频| 久久久久久久一区| 精品成人在线观看| 久久久久国产成人精品亚洲午夜| 精品国产123| 久久久久久久电影| 久久精品夜夜夜夜久久| 国产校园另类小说区| 亚洲精品在线观| 久久久美女艺术照精彩视频福利播放| 日韩欧美一区二区三区在线| 欧美成人精品3d动漫h| 欧美三日本三级三级在线播放| 欧美色精品在线视频| 日本在线不卡一区| 日本午夜精品一区二区三区电影| 亚洲成人1区2区| 日本不卡一二三区黄网| 蜜桃av噜噜一区二区三区小说| 毛片av一区二区三区| 国产在线精品一区二区不卡了| 欧美专区在线观看一区| 午夜免费久久看| 日韩av中文字幕一区二区三区| 美女视频一区二区| 国产成人综合自拍| www.亚洲精品| 欧美理论片在线| 欧美精品一区男女天堂| 中文字幕在线一区| 亚洲最新在线观看| 久久精品国内一区二区三区| 中文字幕一区二区日韩精品绯色| 欧美α欧美αv大片| 国产精品伦一区| 视频在线观看国产精品| 国产美女精品在线| 91久久精品网| 欧美精品一区二区三| 亚洲色图.com| 老鸭窝一区二区久久精品| 国产+成+人+亚洲欧洲自线| 色菇凉天天综合网| 精品乱码亚洲一区二区不卡| 亚洲情趣在线观看| 美女诱惑一区二区| 91啪亚洲精品| 久久午夜老司机| 亚洲一区二区视频| 国产精品1区二区.| 欧美电影影音先锋| 亚洲欧洲精品天堂一级 | 国产真实乱对白精彩久久| 丁香婷婷综合网| 欧美一卡二卡三卡| 亚洲男同1069视频| 成人免费高清视频在线观看| 欧美刺激脚交jootjob| 亚洲国产美国国产综合一区二区| 国产成a人亚洲| 精品电影一区二区| 蜜臀a∨国产成人精品| 国产精品午夜在线| 中文字幕国产一区二区| 日本成人在线电影网| 在线视频你懂得一区二区三区| 久久欧美中文字幕| 美女一区二区在线观看| 欧美日韩卡一卡二| 亚洲一区二区在线播放相泽| 97精品久久久久中文字幕| 欧美精品一区二区三区很污很色的| 亚洲一区在线看| 日本道精品一区二区三区| 亚洲图片激情小说| 99久久精品国产麻豆演员表| 国产精品婷婷午夜在线观看| 欧美放荡的少妇| 日本视频一区二区三区| 韩国av一区二区三区在线观看| 日本亚洲最大的色成网站www| 91小视频免费看| 国产精品三级视频| 国产.欧美.日韩| 国产精品传媒入口麻豆| 不卡高清视频专区| 亚洲视频小说图片| 色综合天天做天天爱| 欧美日韩你懂得| 亚洲高清免费一级二级三级| 欧美日韩激情一区二区| 奇米色一区二区| 久久久精品一品道一区| 不卡视频在线看| 一区二区三区在线观看欧美| 欧美丝袜丝nylons| 日韩高清一区二区| 精品乱人伦一区二区三区| 成人高清在线视频| 精品在线观看视频| 麻豆传媒一区二区三区| 日韩一区二区免费在线观看| 日产精品久久久久久久性色| 日韩欧美一二三区| 国产麻豆一精品一av一免费| 国产精品久久二区二区| 欧美中文字幕一区二区三区亚洲| 久久久精品黄色| 国产福利91精品一区二区三区| 日本道免费精品一区二区三区| 亚洲成人动漫精品| 久久久美女毛片| 欧美在线观看视频一区二区| 久热成人在线视频| 亚洲人成网站色在线观看| 在线成人小视频| av亚洲精华国产精华精华| 亚洲国产日韩在线一区模特| 国产精品久久久久久久久免费桃花 | 日韩一区二区免费高清| 国产自产v一区二区三区c| 最新不卡av在线| 欧美sm极限捆绑bd| 在线这里只有精品| 国产.精品.日韩.另类.中文.在线.播放 | 中文字幕亚洲一区二区va在线| 91精品国产综合久久精品 | 91婷婷韩国欧美一区二区| 91香蕉视频mp4| 欧美精选午夜久久久乱码6080| 亚洲精品在线三区| 国产99久久久国产精品| 亚洲综合小说图片| 国产一区二区伦理| 亚洲高清不卡在线观看| 国产农村妇女毛片精品久久麻豆 | 中文字幕五月欧美| 精品国产自在久精品国产| 欧美性受xxxx| 成人a免费在线看| 国产自产v一区二区三区c| 男人的天堂亚洲一区| 亚洲国产sm捆绑调教视频| 亚洲欧美日韩综合aⅴ视频|