国产午夜成人免费看片无遮挡_日本免费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>

        成人性生交大片免费看中文网站| 亚洲主播在线观看| 国产精品免费网站在线观看| 美女国产一区二区三区| 精品欧美乱码久久久久久| 狠狠狠色丁香婷婷综合激情| 国产丝袜美腿一区二区三区| 成人教育av在线| 亚洲精品免费看| 欧美一区二区黄| 国产二区国产一区在线观看| 亚洲男人的天堂在线观看| 欧美一区二区三区色| 国产一区二区三区最好精华液| 欧美极品少妇xxxxⅹ高跟鞋| 91黄视频在线观看| 久久99精品国产91久久来源| 国产精品视频你懂的| 在线观看日韩电影| 精品一区在线看| 一区二区欧美精品| 久久这里只精品最新地址| 欧美天堂一区二区三区| 丁香婷婷综合色啪| 青青草精品视频| 一区二区三区四区激情 | 亚洲成av人在线观看| 欧美一区二区三区日韩| 粉嫩13p一区二区三区| 三级亚洲高清视频| 亚洲视频在线观看三级| 久久久五月婷婷| 91精品国产综合久久精品性色| 成人精品鲁一区一区二区| 日韩黄色免费网站| 国产精品乱人伦| 久久综合色天天久久综合图片| 在线观看国产91| 99re在线精品| 成人av免费在线| 国产精品亚洲专一区二区三区 | 国产精品青草久久| 精品美女一区二区| 日韩三级中文字幕| 日韩一区二区精品在线观看| 欧美探花视频资源| 欧美三级一区二区| 日本韩国精品在线| 色拍拍在线精品视频8848| 成人午夜电影小说| 成人永久aaa| 国产精品99久久久久久久女警| 美女尤物国产一区| 久久99精品一区二区三区 | 日本丶国产丶欧美色综合| jlzzjlzz亚洲女人18| 暴力调教一区二区三区| 成人国产精品免费观看动漫| 国产在线精品视频| 国产91富婆露脸刺激对白| 国产精品一区免费视频| 国产乱码精品1区2区3区| 狠狠色丁香久久婷婷综合_中 | 亚洲男人的天堂网| 亚洲一卡二卡三卡四卡五卡| 亚洲综合视频在线观看| 日韩精品亚洲专区| 国产揄拍国内精品对白| 国产成人免费在线观看| 91在线免费播放| 欧美色大人视频| 精品久久一二三区| 中文字幕av一区 二区| 最新欧美精品一区二区三区| 亚洲精品美国一| 蜜乳av一区二区| 成人激情图片网| 欧美视频一区二区在线观看| 欧美一区二区黄色| 中文字幕亚洲成人| 亚洲成av人影院| 国产大陆精品国产| 欧美色综合久久| 久久老女人爱爱| 一区二区三区日韩| 精品一区二区成人精品| 91视频免费播放| 精品免费视频一区二区| 亚洲欧美日韩国产手机在线| 男人操女人的视频在线观看欧美 | 欧美成人欧美edvon| 综合中文字幕亚洲| 国产综合色产在线精品| 日本电影欧美片| 久久综合九色欧美综合狠狠| 亚洲精品大片www| 成人涩涩免费视频| 在线91免费看| 一区二区三区四区高清精品免费观看| 麻豆精品国产传媒mv男同| 北条麻妃一区二区三区| 日韩午夜在线播放| 亚洲精品免费在线播放| 国产乱一区二区| 欧美日韩黄色影视| 亚洲欧洲精品天堂一级| 久久精品99久久久| 欧美日韩成人一区| 一区二区三区日本| eeuss鲁片一区二区三区在线看| 精品精品国产高清a毛片牛牛| 亚洲成人综合视频| 欧美系列在线观看| 亚洲精品综合在线| 99在线精品一区二区三区| 久久免费美女视频| 韩国av一区二区| 日韩欧美国产麻豆| 日韩av电影免费观看高清完整版 | 久久精品男人天堂av| 日韩精品一卡二卡三卡四卡无卡| 91捆绑美女网站| 亚洲色图在线看| 本田岬高潮一区二区三区| 欧美极品美女视频| 成人免费不卡视频| 中文字幕制服丝袜成人av| 成人黄色在线看| 国产精品高清亚洲| 99国产精品一区| 一二三四社区欧美黄| 欧美少妇xxx| 日本特黄久久久高潮| 日韩三级视频在线观看| 精品一区二区三区视频在线观看| 日韩免费视频一区| 国产美女视频91| 国产欧美日韩综合| 91免费观看在线| 亚洲一卡二卡三卡四卡五卡| 欧美丰满一区二区免费视频 | 欧美日韩国产片| 日韩电影一区二区三区四区| 2023国产一二三区日本精品2022| 国产一区二区三区美女| 国产欧美一二三区| 91精品福利视频| 日本午夜一区二区| 久久日一线二线三线suv| 国产一区二区精品久久| 国产精品不卡一区| 欧美视频中文一区二区三区在线观看| 成人黄色电影在线| 亚洲欧美一区二区不卡| 欧美美女直播网站| 国产乱码精品一区二区三区av| 国产精品国产自产拍高清av| 欧美日韩视频不卡| 国产精品一区二区视频| 亚洲精品视频在线观看免费 | 51精品久久久久久久蜜臀| 秋霞午夜av一区二区三区| 国产欧美精品国产国产专区| 在线观看欧美日本| 美女视频第一区二区三区免费观看网站| 久久精品人人做人人爽人人| 在线看日本不卡| 国产成人免费视频精品含羞草妖精| 亚洲精品日日夜夜| 欧美xxxx老人做受| 欧美影院一区二区| 国产99久久久国产精品免费看 | 亚洲国产精品成人综合色在线婷婷| 91浏览器在线视频| 国内精品国产成人国产三级粉色| 亚洲欧洲制服丝袜| 国产偷国产偷精品高清尤物| 欧美日韩卡一卡二| 91免费看`日韩一区二区| 国产原创一区二区| 日日骚欧美日韩| 夜夜嗨av一区二区三区网页| 国产亚洲成aⅴ人片在线观看| 欧美久久一区二区| 色悠久久久久综合欧美99| 国产很黄免费观看久久| 麻豆国产精品官网| 亚洲国产日日夜夜| 洋洋成人永久网站入口| 国产精品理伦片| 国产午夜精品一区二区三区嫩草| 欧美电影一区二区三区| 91在线播放网址| 99在线精品一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 国产一区三区三区| 国产精品中文字幕欧美| 久久99蜜桃精品| 免费成人深夜小野草| 日本在线不卡一区|