Hopes

          Start Here..

           

          ASP.NET總結(jié)

          ASP.NET總結(jié)

          2009年09月24日

            第一章: 

            1.ASP.NET優(yōu)點(diǎn): 

            1) 與瀏覽器無關(guān) 2) 方便設(shè)置斷點(diǎn),易于調(diào)試 3) 編譯后執(zhí)行,運(yùn)行效率高 4) 豐富的控件庫 5) 代碼后置,邏輯分明 

            Asp.net頁面編譯:asp.net代碼經(jīng)過編譯后生成MSIL(微軟中間語言),然后通過JIT(即時(shí)編譯器)進(jìn)一步編譯成機(jī)器語言,其中JIT并非一次完全編譯,而是調(diào)用哪部分代碼就編譯哪部分,編譯好的不需要再編譯。 

            2.IIS:基于Windows系統(tǒng)的Web服務(wù)器的,ASP.NET的發(fā)布是基于IIS服務(wù)器的,類似JSP中使用Tomcat。在VS中,內(nèi)置了輕量級(jí)的Web服務(wù)器,為Cassini,無須配置IIS。 

            3.ASP.NET解決方案自動(dòng)生成文件如下 

            1) App_Data(存放數(shù)據(jù)的文件夾) 2)Web.Config(站點(diǎn)配置文件) 3) Default.aspx(Web窗體) 4) Default.aspx.cs(代碼后置文件) 

            4.ASP.NET兩種編碼方式:代碼內(nèi)嵌(Html代碼和C#代碼交叉使用,只有aspx文件) 代碼后置(Html代碼和C#代碼分開放置,包含aspx文件和aspx.cs文件) 

            第二章: 

            1.Asp.net運(yùn)行機(jī)制:用戶第一次請(qǐng)求頁面時(shí),asp.net引擎會(huì)編譯aspx文件和cs文件,合并生成頁面類,請(qǐng)求經(jīng)處理后,返回處理結(jié)果。而第二次請(qǐng)求頁面時(shí),由于頁面類已存在,故直接處理返回。 

            2.Asp.net中常見的系統(tǒng)對(duì)象 

            1) Page:指向頁面自身的方式,整個(gè)頁面執(zhí)行期內(nèi)可使用該對(duì)象。<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”default.aspx.cs” Inherits=“_default”> 注意:AutoEventWireup設(shè)置頁面是否自動(dòng)調(diào)用網(wǎng)頁事件,如果該屬性設(shè)置為false,則不會(huì)觸發(fā)事件(例如Page_Load等等) 

            2) Request:存儲(chǔ)請(qǐng)求信息,常用屬性QueryString可得到URL中 ?后面的參數(shù),F(xiàn)orm表單提交方式時(shí)取值,ServerVariable包含服務(wù)器端和客戶端的系統(tǒng)信息,Params以上三種均可取值,因?yàn)樾枰赨RL,表單,環(huán)境變量中找尋,故速度慢。舉例 :url為 MyAs.aspx ?id=5,則取值可使用 string num = Request.QueryString[”id”].ToString() ; 

            3) Response:存儲(chǔ)輸出信息,常用屬性Write方法可輸出指定文本內(nèi)容,Redirect方法為頁面重定向操作。 

            4) Session:狀態(tài)保持,存儲(chǔ)于服務(wù)器端,用于存儲(chǔ)會(huì)話信息,一般用于當(dāng)用戶登錄時(shí)記錄用戶狀態(tài),當(dāng)訪問其它頁面時(shí)判斷是否存在該Session,如果為null則用戶尚未登錄,則轉(zhuǎn)向登錄頁面即可,不為null時(shí)可繼續(xù)處理。 

            使用方式 :Session[”user” ] = ”wkj”; 頁面判斷使用 if(Session[”user”] == null) Response.Redirect(”Login.aspx”) ; else Response.Write(”歡迎” + Session[”user”].ToString()) ; 

            5) Cookie:狀態(tài)保持,存儲(chǔ)于客戶端,用于當(dāng)用戶第一次登錄時(shí)記錄用戶信息,以備下次登錄時(shí)不必再重復(fù)輸入一些基本信息,例如登錄郵箱時(shí)所輸入的Email地址,登錄成功后,第二次不必再輸入Email地址信息。 

            6) Application:狀態(tài)保持,存儲(chǔ)于服務(wù)器端,為整個(gè)應(yīng)用程序級(jí)的對(duì)象,一般用于統(tǒng)計(jì)在線人數(shù)。用戶首次登錄時(shí)設(shè)置Application[”num”] = 0,以后每次有一個(gè)用戶登錄則設(shè)置Application[”num”]=Convert.ToInt32(Application[”num”].ToString()) + 1 ; 

            7) Server:提供服務(wù)器端的一些屬性和方法,最常用方法MapPath,得到所傳路徑的絕對(duì)路徑,一般做文件操作時(shí)取絕對(duì)路徑使用。 例如:string path = Server.MapPath(”Default.aspx”);可能返回 : D:\wkj\Lesson2Web\Default.aspx 

            3.頁內(nèi)數(shù)據(jù)傳遞:asp.net會(huì)發(fā)生頁面回傳,故可使用Page.IsPostBack判斷。一般在Page_Load中做頁面初始化時(shí)需要加上,以避免頁面回傳后重新初始化信息而取不到頁面輸入的值。 If( ! Page.IsPostBack) {初始化信息} 

            4.跨頁數(shù)據(jù)傳遞:支持跨頁傳遞需要設(shè)置PostBackUrl屬性到相應(yīng)路徑,支持PostBackUrl的控件只有Button,LinkButton,ImageButton。第二個(gè)頁面取值 if(Page.PreviousPage != null) { if(PreviousPage.IsCrossPagePostBack) { Response.Write( ((TextBox)this.PreviousPage.FindControl(”txtName”)).Text ) } } 

            第三章: 

            1.Asp.net控件 

            1) html控件,后臺(tái)取不到值,可轉(zhuǎn)換民服務(wù)器端控件加runat=”server”。 

            2) Web控件,可執(zhí)行復(fù)雜請(qǐng)求,優(yōu)點(diǎn):跨瀏覽器兼容性(程序員不用考慮瀏覽器版本),事件驅(qū)動(dòng)模型(像WinForms編程一樣)。 

            2.TextBox控件 AutoPostBack(是否自動(dòng)提交),例如:設(shè)置TextChange事件,AutoPostBack設(shè)置為true則自動(dòng)觸發(fā)事件,設(shè)置為false則不觸發(fā) 

            TextMode(文本樣式) SingleLine為單行輸入,默認(rèn)值。 MultiLine為多行輸入。Password為密碼輸入方式。 

            3.站點(diǎn)地圖,網(wǎng)站右鍵添加新項(xiàng),選擇站點(diǎn)地圖,默認(rèn)名為Web.sitemap。站點(diǎn)地圖是對(duì)站點(diǎn)結(jié)構(gòu)的XML描述。注意事項(xiàng):站點(diǎn)地圖根節(jié)點(diǎn)為<siteMap>元素,并且每個(gè)文件有且僅有一個(gè)根節(jié)點(diǎn)。<siteMap>下一級(jí)有且僅有一個(gè)<siteMapNode>節(jié)點(diǎn)。<siteMapNode>下面可以有多個(gè)<siteMapNode>節(jié)點(diǎn)。站點(diǎn)地圖中,同一個(gè)URL僅能出現(xiàn)一次。 

            4.導(dǎo)航控件 

            SiteMapPath控件: 面包屑導(dǎo)航,自動(dòng)調(diào)用站點(diǎn)地圖,在站點(diǎn)地圖節(jié)點(diǎn)中url指示的頁面中托入SiteMapPath控件即可。如果站點(diǎn)地圖中不包含當(dāng)前頁面則SiteMapPath控件不顯示也不報(bào)錯(cuò)。改變分隔符使用PathSeparator屬性。 

            TreeView控件:配置的數(shù)據(jù)源可為站點(diǎn)地圖或者是XML文件,設(shè)置為站點(diǎn)地圖時(shí)可直接顯示,設(shè)置為XML文件時(shí)還需要設(shè)置 ”編輯TreeNode數(shù)據(jù)綁定”,添加節(jié)點(diǎn)設(shè)置TextField屬性為顯示,NavigateUrlField屬性為鏈接. 

            Menu控件:使用方式與TreeView控件一致,只是Menu控件可顯示靜態(tài)或動(dòng)態(tài)的,使用StaticDisplayLevels屬性設(shè)置靜態(tài)或動(dòng)態(tài),默認(rèn)為1即動(dòng)態(tài),可設(shè)置相應(yīng)級(jí)別數(shù)設(shè)置為靜態(tài)。 

            5.母版頁:應(yīng)用于統(tǒng)一的布局。網(wǎng)站右鍵添加新項(xiàng)選擇母版頁,默認(rèn)命名為MasterPage.master,可改名。設(shè)置母版頁樣式,可添加內(nèi)容頁。 

            特點(diǎn):有利于站點(diǎn)修改和維護(hù),在母版頁中添加事件,則每一個(gè)頁面都可使用。 

            第五章: 

            1.?dāng)?shù)據(jù)展示兩種實(shí)現(xiàn)方式:一種是使用ado.net 手寫代碼實(shí)現(xiàn),另一種是使用數(shù)據(jù)源控件實(shí)現(xiàn)(簡(jiǎn)單方便) 

            2.?dāng)?shù)據(jù)源控件:快速實(shí)現(xiàn)多種常用的數(shù)據(jù)源進(jìn)行展示,快速完成表增刪改查操作。數(shù)據(jù)源控件不提供展示,而是數(shù)據(jù)綁定控件提供展示(GridView,DetailsView,DropDownList,DataList,Repeat er)。 

            常用五種數(shù)據(jù)源控件 :SqlDataSource(sqlserver數(shù)據(jù)庫),AccessDataSource(access數(shù)據(jù)庫),SiteMapDataSource(SiteMapPath),XmlDataSource(TreeView,Menu),ObjectDataSource(對(duì)象型,分層結(jié)構(gòu)使用) 

            3.ObjectDataSource重要屬性 

            TypeName獲取設(shè)置ObjectDataSource對(duì)象表示類的名稱,即業(yè)務(wù)對(duì)象的類名, SelectMethod檢索數(shù)據(jù)方法名,InsertMethod插入數(shù)據(jù)方法名,UpdateMethod 更新數(shù)據(jù)方法名,DeleteMethod 刪除數(shù)據(jù)方法名 

            4.手寫代碼方式綁定GridView:this.gvMain.DataSource = UserManager.GetAllUsers() ; this.gvMain.DataBind() ; 

            設(shè)置數(shù)據(jù)源方式綁定GridView:this.gvMain.DataSourceId=數(shù)據(jù)源id; 

            5.GridView綁定信息:點(diǎn)右小鍵頭選擇新建數(shù)據(jù)源,選ObjectDataSource,選業(yè)務(wù)邏輯對(duì)象,選擇相應(yīng)方法,完成。設(shè)置分頁只要設(shè)置AllowPaging為true即可。 綁定字段設(shè)置7種 : 

            1) BoundField顯示普通文本,默認(rèn)方式,可通過DataFormatString屬性設(shè)置顯示格式,{0 : C}貨幣 {0 :D}數(shù)字 {0 :yy-mm-dd}日期格式,注意設(shè)置HtmlCode屬性為false時(shí)DataFormatString屬性才生效 

            2) TemplateField 模板列,最常用方式,可自己編寫HTML代碼進(jìn)行設(shè)置 

            3) ButtonField 按鈕列,可通過CommadName設(shè)置按鈕命令,自定義代碼實(shí)現(xiàn)按鈕觸發(fā)后操作。 

            4) CommandField 類似于按鈕列,只不過其提供了選擇,編輯,插入或刪隊(duì)操作的命令按鈕,自動(dòng)生成命令,無須手寫代碼。 

            5) HyperLinkField 將所綁定數(shù)據(jù)以超鏈接形式顯示。 

            6) ImageField 在GridView中顯示圖片列,DataImageUrlFields設(shè)置綁定列,DataImageUrlFormatString設(shè)置圖片路徑。 

            7) CheckBoxField 使用復(fù)選框形式顯示布爾類型數(shù)據(jù)。只有當(dāng)該控件中有布爾型數(shù)據(jù)時(shí)才可使用CheckBoxField。 

            6.Bind方法與Eval方法的區(qū)別: 

            Eval是只讀的單向數(shù)據(jù)綁定,所綁定的內(nèi)容不會(huì)提交回服務(wù)器,使用方式<%# Eval(”user”).ToString() %>,可實(shí)現(xiàn)格式化<%# Eval(”PublishDate”, ”{0 :dd/MM/yyyy}”) %>顯示格式可能為 ”17/08/2008”。 

            Bind支持讀寫功能,為雙向數(shù)據(jù)綁定,所綁定內(nèi)容自動(dòng)提交回服務(wù)器,常與輸入控件一起使用。 <%#Bind(”Title”) %> 

            7.光棒效果: protected void gvDemo_RowDataBound(object sender, GridViewRowEventArgs e) 

            { 

            if (e.Row.RowType == DataControlRowType.DataRow) 

            { 

            e.Row.Attributes.Add("onmouseover","currentcolor=t his.style.backgroundColor;this.style.backgroundColo r='#6699ff'"); e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor"); } } 8.多選效果: function GetAllCheckBox(CheckAll) 

            { 

            var items = document.getElementsByTagName("input"); 

            for(i=0; i<items.length;i++) 

            { 

            if(items[i].type=="checkbox") 

            { 

            items[i].checked = CheckAll.checked; 

            } 

            } 

            } 

            9.后臺(tái)取頁面值。 for (int i = 0; i < this.gvBooks.Rows.Count; i++) 

            { 

            CheckBox cb = (gvBooks.Rows[i].FindControl("chbSelect")) as CheckBox; 

            if (cb.Checked == true) 

            { 

            sb += (gvBooks.Rows[i].FindControl("lblId") as Label).Text+","; 

            } 

            } 

            10.DropDownList控件:DataTextField屬性為顯示字段,DataValueField屬性為真正顯示的值,SelectedIndexChange事件更改選定項(xiàng)內(nèi)容時(shí)觸發(fā),僅當(dāng)AutoPostBack屬性設(shè)置為true時(shí)有效。 

            得到下拉框顯示的信息,ddlPublisher.SelectedItem.Text或者ddlPublisher.Text。得到下拉框的值:ddlPublisher.SelectedItem.Value或者ddlPublisher.SelectedValue; 

            11.DetailsView控件可顯示數(shù)據(jù)庫中的單條記錄詳細(xì)信息,使用方式與GridView類似。只是需要設(shè)置傳遞參數(shù)。 

            12.使用控件顯示時(shí),如果內(nèi)容中有HTML標(biāo)簽,比如”<br>”,也會(huì)顯示出來,想讓它顯示成換行,將該字段的HtmlEncode屬性設(shè)置為false即可。 

            第六章: 

            1.驗(yàn)證控件,可以輕松實(shí)現(xiàn)用戶輸入的驗(yàn)證,且與用戶瀏覽器無關(guān)。由在客戶端或服務(wù)器中運(yùn)行的驗(yàn)證代碼執(zhí)行,主要為客戶端。 

            驗(yàn)證控件特點(diǎn):以調(diào)試模式運(yùn)行,如果驗(yàn)證控件驗(yàn)證出問題,則頁面不會(huì)提交到服務(wù)器執(zhí)行,說明驗(yàn)證是在客戶端進(jìn)行的。 

            如果將IE設(shè)置為禁用腳本,而頁面發(fā)生回傳,驗(yàn)證沒有發(fā)生,正常情況下不希望沒有經(jīng)過驗(yàn)證就進(jìn)入后臺(tái)操作,可使用if(Page.IsValid) { } 

            驗(yàn)證控件常用屬性 :(如下ControlToValidate為所有驗(yàn)證控件的必須屬性): 

            ControlToValidate為所要驗(yàn)證的控件的ID 

            Text為出錯(cuò)時(shí)的提示,一般寫為*號(hào) 

            ErrorMessage為提交給ValidationSummary的錯(cuò)誤提示,當(dāng)Text為空時(shí),會(huì)顯示該錯(cuò)誤信息。 

            1) RequiredFieldValidator 非空驗(yàn)證 

            2) CompareValidator 比較控件 用于驗(yàn)證用戶輸入的內(nèi)容是否符合要求,一般用于兩次密碼的比較或者輸入的值與某個(gè)固定值的對(duì)比 

            常用屬性:ControlToCompare即要進(jìn)行對(duì)比的控件,Type為比較類型,不同類型比較會(huì)出錯(cuò),Operator為比較運(yùn)算符,默認(rèn)為等于 

            3) RangeValidator 用于檢查范圍 

            常用屬性:MaximumValue為最大值,MinimumValue為最小值,Type為驗(yàn)證類型(字符串,整型,雙精度,日期,貨幣五種) 

            4) RegularExpressionValidator 正則表達(dá)式驗(yàn)證控件,正則表達(dá)式就是用某種模式去匹配一類字符串的一個(gè)特殊公式。 

            常用屬性:ValidationExpression用于確定有效性的正則表達(dá)式,MS提供了一些,一些常見的可見書上145頁。也可到網(wǎng)上去搜索。 

            5) CustomValidator 自定義驗(yàn)證控件,支持客戶端驗(yàn)和服務(wù)器端驗(yàn)兩種方式。 

            常用屬性:ClientValidationFunction用于設(shè)置客戶端驗(yàn)證的腳本函數(shù) OnServerValidate為服務(wù)器端驗(yàn)證的事件方法。 

            例如驗(yàn)?zāi)硞€(gè)文本框值的長(zhǎng)度,要求必須大于6位 

            Function CheckLength(source,args) 

            { 

            If(args.value.length<6) args.IsValid=false ; 

            Else args.IsValid=true ; 

            } 

            6) ValidationSummary 驗(yàn)證報(bào)告控件,該控件不對(duì)窗體輸入進(jìn)行驗(yàn)證,只是將驗(yàn)證的錯(cuò)誤匯總在一處統(tǒng)一顯示,顯示的為ErrorMessage 

            常用屬性:ShowMessageBox是否顯示彈出提示信息,ShowSummary指示是否顯示報(bào)告內(nèi)容,想設(shè)置為彈出框顯示將前者設(shè)為true,后者設(shè)置為false 

            2.JS版日歷控件 可實(shí)現(xiàn)在用戶選擇日期時(shí),不刷新頁面 

            使用方法 :1. 將My97DatePicker放入站點(diǎn)中的一個(gè)目錄,假設(shè)放于網(wǎng)站的根目錄。 

            2. 在頁面添加如下語句 : <script language="javascript" type="text/javascript" src="My97DatePicker/WdatePicker.js"></script> 

            3. 在設(shè)置日期的控件上添加如下樣式和事件,例如 

            class="Wdate" onFocus="new WdatePicker(this,'%Y-%M-%D %h:%m',true,'default')" 

            3.文件上傳控件 可將圖片等文件上傳到服務(wù)器 

            使用方法: 1. 托入FileUpload <asp:FileUpload onchange=”CheckImg(this)” ID=”fulFile” runat=”server”> 

            2. 控制上傳的文件格式(JS腳本): 

            function CheckImg(this) 

            { 

            var mime=FileUpload.value; 

            mime=mime.toLowerCase( ).substr(mime.lastIndexOf(".")); if(mime!=“.jpg") { FileUpload.value=""; alert("僅支持JPG格式"); 

            } 

            } 

            3.點(diǎn)擊更新時(shí),將圖片上傳到服務(wù)器,在ItemUpdated事件中編碼 

            protected void dvBookList_ItemUpdated(... ...) 

            { 

            FileUpload fulBook = this.dvBookList.FindControl("fulBook") as FileUpload; 

            Image imgBook = this.dvBookList.FindControl("imgBook") as Image; 

            string FileName = fulBook.FileName; 

            if (FileName.Trim().Length != 0) 

            { 

            string strpath =Server.MapPath(imgBook.ImageUrl); 

            fulBook.PostedFile.SaveAs(strpath); //將圖片保存在此路徑中 

            } 

            } 

            4.MultiView為多視圖的意思,一般和View控件一起使用,View可表現(xiàn)為一個(gè)窗口,而MultiView為View控件提供容器。一個(gè)MultiView可有多個(gè)View 

            ActiveViewIndex用于設(shè)置或獲取當(dāng)前被激活顯示的View索引值 。MultiView控件名.ActiveViewIndex=0,則設(shè)置顯示第一個(gè)視圖。 

            5.ImageMap可以將圖片轉(zhuǎn)變?yōu)閷?dǎo)航菜單,可對(duì)圖片區(qū)域進(jìn)行劃分,為區(qū)域賦予特定屬性,類似于HTML中的熱點(diǎn)(map標(biāo)簽) 

            為了解內(nèi)容,詳細(xì)見書160頁 

            6.HyperLink 超鏈接控件 常用屬性 Text為鏈接顯示文本,NavigateUrl為鏈接所指向的URL地址,ImageUrl設(shè)置為圖片形式的鏈接。 

            第七章: 

            1.DataList 以某種格式顯示數(shù)據(jù),格式可使用模板和樣式定義,可用于任何重復(fù)結(jié)構(gòu)中的數(shù)據(jù),比如說表,使用<Table>等相關(guān)元素在列表中呈現(xiàn)項(xiàng)。 

            托入頁面后需要編輯模板列,常用模板兩個(gè),一是ItemTemplate為項(xiàng)模板,標(biāo)記了每行顯示的內(nèi)容。二是SeparatorTemplate為分隔符模板,一般為一條線<hr> 

            使用方式:1. 根據(jù)美工制作好的靜態(tài)頁面,將項(xiàng)模板添加到DataList中。 

            2. 找到需要替換的部分,直接替換為綁定語句(Eval, Bind)。 

            3. 綁定數(shù)據(jù)源。 

            2. DataList排序,需要自定義方法,在頁面中綁定的是排好序的數(shù)據(jù)。 

            public static IList<Book> GetBooks(int categoryId, string order) 

            { 

            //組合的sql語句 

            string condition = " WHERE 1=1 "; 

            if (categoryId > 0) 

            condition = " AND CategoryId = " + categoryId; 

            if (order.Trim().Length > 0) 

            condition = " order by " + order; 

            return BookService.GetBooks(condition); 

            } 

            3.DataList分頁 

            1) 使用普通SQL語句實(shí)現(xiàn) 

            Select Top 頁容量 * 

            from 表 

            where 條件 and id not in 

            (Select Top 頁容量*(當(dāng)前頁數(shù)-1) id 

            from 表 

            where 條件 order by 排序條件) 

            order by 排序條件 

            2) SQLSERVER2005方式 

            Select * 

            From 

            ( select ROW_NUMBER() over(order by 排序條件) as 別名 , * from 表名 ) as 新表名 

            Where 別名 between 頁面第一頁號(hào) and 頁面最后一頁號(hào) 21--------30 

            Order by 排序條件 

            3) PagedDataSource分頁類方式,指定數(shù)據(jù)源和當(dāng)前頁,PageSize即可使用,類自動(dòng)計(jì)算其他相關(guān)屬性。 

            //1.聲明分頁類 

            PagedDataSource pdsBook = new PagedDataSource(); 

            //2.綁定數(shù)據(jù)源 

            pdsBook.DataSource = BookManager.GetOrderedSmallBooksByCategoryId(categ oryID, ViewState["order"].ToString()); 

            //3.設(shè)置分頁類可以分頁 

            pdsBook.AllowPaging = true; 

            //4.設(shè)置每頁顯示的行數(shù) pdsBook.PageSize = 4; //5.設(shè)置當(dāng)前為第幾頁 

            pdsBook.CurrentPageIndex = CurrentPage; 

            lblCurrentPage.Text = string.Format("第 {0} 頁,共 {1} 頁",CurrentPage+1,pdsBook.PageCount.ToString()); 

            //6.將分頁類綁定到DataList 

            dlBooks.DataSource = pdsBook; 

            dlBooks.DataBind(); 

            4.ViewState 為頁面級(jí)的狀態(tài)保持,僅在當(dāng)前頁面有效,不占用系統(tǒng)Session資源,利用IsPostBack屬性對(duì)ViewState屬性賦初值,可避免使用時(shí)NULL的判斷。 

            使用方式:ViewState["名稱"]=值 例如將頁數(shù)0存入ViewState可以這樣寫 ViewState["Page"]=0 ; 

            事實(shí)上,ViewState狀態(tài)保持就是在頁面放置一個(gè)隱藏域,每次數(shù)據(jù)回傳,隱藏域內(nèi)容也一起回傳,從而達(dá)到狀態(tài)保持效果 

            顯示為 : <input type="hidden" name="_VIEWSTATE" value=""> 

            5. Repeater控件專門用于精確內(nèi)容的顯示,不會(huì)自動(dòng)生成任何用于布局的代碼,完全通過模板控件。當(dāng)美工提供的設(shè)計(jì)頁沒有Table,樣式都在CSS中時(shí)可使用。 

            使用方式同DataList,另外分頁,排序也同DataList,代碼可以重用。 

            6. 發(fā)布RSS 了解內(nèi)容 

            過程:制作RSS模板,設(shè)置頁面輸出為XML,去掉所有HTML源代碼只留下Repeater控件,使用RSS模板替換相關(guān)項(xiàng),使用RSS閱讀工具訪問該RSS頁。 

            注意:顯示字段使用HtmlEncode編碼處理。 

            7.DataList控件、Repeater控件、GridView控件各自特點(diǎn) 

            GridView控件最簡(jiǎn)單方便,效率最低 

            Repeater控件最完善,最難用,全手工,效率最高 

            DataList控件介于兩者之間,效率接近Repeater,使用范圍最廣。 

            第八章: 

            1.FreeTextBox控件 是一種富文本控件,也就是在線文本編輯控件,可以像Word編輯器那樣對(duì)錄入的內(nèi)容設(shè)置樣式,排版等,而不用編寫HTML代碼。 

            常見的有: 

            ① RichTextBox,最早的富文本控件,富文本控件因它而得名。 

            ② FCKeditor,是國(guó)外一個(gè)開源的項(xiàng)目。 

            ③ CuteEditor,功能最完善,但它自身也是相當(dāng)龐大的。 

            ④ eWebEditor,國(guó)產(chǎn)軟件,有中國(guó)特色。 

            ⑤ FreeTextBox,簡(jiǎn)單方便,在國(guó)內(nèi)使用相當(dāng)普遍。 

            使用方法: 

            1) 添加控件進(jìn)入工具箱 

            2) 添加選項(xiàng)卡。右擊工具欄,選擇“添加選項(xiàng)卡”命令。 

            3) 選擇項(xiàng)。右擊選項(xiàng)卡,點(diǎn)擊“選擇項(xiàng)”命令。然后,單擊“瀏覽”按鈕,找到并選擇需要加入的FreeTextBox.dll,單擊打開按鈕。 

            4) 單擊“確定”按鈕。 

            5) 頁面使用 把FreeTextBox控件拖入頁面,可以看到頁面種多了幾行代碼: 

            <% Register Assembly=”FreeTextBox” Namespace=”FreeTextBoxControls” TagPrefix=”FTB” %> 

            <FTB:FreeTextBox ID=”FreeTextBox1” runat=”server”></FTB:FreeTextBox> 

            大意:注冊(cè)一個(gè)叫做FreeTextBox的程序,命名空間是FreeTextBoxControls,標(biāo)簽前綴是FTB。 

            常用屬性:Language(語言),注明”en-US”為英語,改成”zh-CN”就能換成中文了。 

            2.驗(yàn)證碼控件Webvalidates 

            1)使用步驟:將Webvalidates添加進(jìn)工具箱同添加FreeTextBox方式。 

            2) 生成驗(yàn)證碼: snCode.Create(); //snCode為驗(yàn)證碼控件名稱,一般在PageLoad中 If(!IsPostBack) { snCode.Create(); } 

            3) 檢查所輸入的信息與驗(yàn)證碼是否相同 snCode.CheckSN(txtCode.Text.Trim()) //返回bool型的值 

            自定義方法判斷驗(yàn)證碼是否正確 

            Protected bool CeckCode() 

            { 

            if (snCode.CheckSN(txtCode.Text.Trim())) return true; 

            else { snCode.Create(); return false; } //如果驗(yàn)證碼輸入不正確,則生成新驗(yàn)證碼 

            } 

            第九章: 

            1.用戶控件:后綴名為ascx ,是一種自定義的組合控件,可以封裝獨(dú)立的功能,可像控件一樣使用托拽方式 

            作用:頁面代碼的重用。 

            使用:添加新項(xiàng),選擇Web用戶控件(后綴ascx),在其中放置相關(guān)的web控件,編寫后臺(tái)代碼。然后在其它頁面中直接拖到頁面中即可。 

            注意:用戶控件可以包含其它用戶控件,但不可以嵌套包含。即用戶控件1包含用戶控件2,用戶控件2又包含了用戶控件1,則會(huì)出錯(cuò)。 

            用戶控件不可以單獨(dú)訪問。在URL中直接訪問會(huì)出錯(cuò)。 

            用戶控件與頁面的區(qū)別 詳見書上第229頁。 

            2.?dāng)?shù)字水印實(shí)現(xiàn):見第9章總結(jié)介紹。自己添加到本頁面。 

            1) 創(chuàng)建HttpHandle程序:添加新項(xiàng)----一般處理程序(后綴.ashx) 

            注意:實(shí)現(xiàn)HttpHandler功能必須實(shí)現(xiàn)IHttpHandler接口,任何實(shí)現(xiàn)該接口的類都可以用于處理輸入的Http請(qǐng)求。 

            2) 數(shù)字水印實(shí)現(xiàn) 

            思路:.ashx文件方式實(shí)現(xiàn)數(shù)據(jù)水印思路分析 

            獲得URL傳的參數(shù)ISBN; 根據(jù)ISBN查找相對(duì)應(yīng)的封面圖片; 

            將數(shù)字水印圖片“粘貼”在封面圖片的右下角; 

            修改程序的輸出類型,并將組合出的新圖片輸出。 

            修改頁面中訪問該圖片的路徑。 

            具體代碼:P235到P236 

            注意:當(dāng)制作好一般處理程序后修改圖片路徑 BookCover.ashx ? ISBN=值 

            3.全局Handler方式實(shí)現(xiàn)數(shù)字水印 

            1)新建類,讓該類實(shí)現(xiàn)IHttpHandler接口,實(shí)現(xiàn)方法 

            2)在web.config中注冊(cè)類,設(shè)置路徑 

            <httpHandlers> 

            <add verb=”*” path=”Images/BookCovers/*.jpg” type=”CoverHandler” /> 

            </httpHandlers> 

            說明:verb:get,post,ftp等 

            Path:訪問路徑,此處表示所有針對(duì)”Images/BookCovers/”路徑中所有對(duì).jpg的請(qǐng)求都交給CoverHandler類進(jìn)行處理 

            Type:指定處理程序的類(CoverHandler) 

            具體代碼:P240 

            注意:在IIS上使用該方式要做其他處理,因?yàn)镮IS功能比較完善,可以獨(dú)立處理一些訪問請(qǐng)求,比如.html,.jpg等都不會(huì)提交給ASP.NET處理。 

            對(duì)IIS進(jìn)行處理:打開IIS,虛擬目錄屬性項(xiàng),目錄欄中選“配置”,添加擴(kuò)展名。 

            第十章: 

            1.ASP.NET的兩種配置文件,都是基于XML格式的。 

            1) machine.config:又稱服務(wù)器配置文件,提供整個(gè)機(jī)器的默認(rèn)配置,對(duì)該文件的修改將影響所有本機(jī)的站點(diǎn)。 

            2) web.config:一般用于應(yīng)用程序級(jí)別的配置文件,對(duì)其修改不影響其他站點(diǎn),也可以用于站點(diǎn)下的子目錄。 

            注意:當(dāng)一個(gè)網(wǎng)站中配置了多個(gè)web.config文件時(shí)以就近原則為準(zhǔn)。 

            2.Web.config中配置連接字符串 

            1) 配置 <connectionStrings> 

            <add name="MyBookShop" connectionString="Data Source=localhost; Initial Catalog=MyBookShop; User ID=sa; password=d@e26c#"/> 

            </connectionStrings> 

            2) 讀取 數(shù)據(jù)訪問層的類庫引用該類需要手動(dòng)添加System.Configuration類庫的引用,再在需要讀取配置節(jié)的頁面using System.Configuration; 

            然后使用如下方式讀取 string connectionString=ConfigurationManager.ConnectionSt rings[“MyBookShop”].ConnectionString; 

            3.加密解密 

            1) 加密web.config里面connectionStrings配置節(jié) 

            aspnet_regiis.exe -pef "connectionStrings" "你的Web項(xiàng)目路徑" -prov "DataProtectionConfigurationProvider" 

            eg:aspnet_regiis.exe -pef "connectionStrings" "E:\WKJ\MyBookShop\web" -prov "DataProtectionConfigurationProvider" 

            2) 解密web.config里面connectionStrings配置節(jié) 

            aspnet_regiis.exe -pdf "connectionStrings" "你的Web項(xiàng)目路徑" 

            eg:aspnet_regiis.exe -pdf "connectionStrings" "E:\WKJ\MyBookShop\web" 

            4.身份驗(yàn)證 

            1) Windows身份驗(yàn)證 安全性高,只能在windows平臺(tái)可以使用,并且在域中要有一個(gè)帳戶 

            2) Passport身份驗(yàn)證 需要付費(fèi) 

            3) Forms身份驗(yàn)證 使用廣泛 

            <system.web> 

            <authentication mode="Forms"> 

            <forms name="AdminUser" loginUrl="~/Admin/AdminLogin.aspx" timeout="60"> 

            </forms> 

            </authentication> 

            </system.web> 

            注意:1) authentication中的mode指定驗(yàn)證方式,分別有Windows、Passport和Forms 

            2) forms中的name為cookie名稱,默認(rèn)為.ASPXAUTH。 

            loginUrl為表單驗(yàn)證的登錄頁面,未通過驗(yàn)證的用戶都轉(zhuǎn)到該頁面。 

            Timeout為表單驗(yàn)證的有效時(shí)間,即是cookie的過期時(shí)間 

            5.授權(quán) 

            <system.web> 

            <authorization> 

            <deny users="?"/> 

            <allow roles="admin"> 

            <deny users="*"/> 

            </authorization> 

            </system.web> 

            其中:deny為拒絕,allow為允許。“ * ”代表所有用戶,“ ? ” 代表匿名用戶 

            6.設(shè)置票證 System.Web.Security.FormsAuthentication.SetAuthCoo kie(user.Name, true); 注意true為設(shè)置持久化,設(shè)置為false則當(dāng)前頁面關(guān)閉cookie失效 

            刪除票證 System.Web.Security.FormsAuthentication.SignOut( ); 刪除票證后Cookie失效 注意:當(dāng)未經(jīng)授權(quán)的用戶訪問頁面時(shí),會(huì)轉(zhuǎn)向登錄頁要求注冊(cè)。 

            在登錄成功后: string strRedirect = Request[“ReturnUrl”]; 可得到用戶請(qǐng)求的頁面 

            If(strRedirect == null) 則轉(zhuǎn)向自己處理的頁面 

            Else Response.Redirect(strRedirect); 轉(zhuǎn)向用戶所請(qǐng)求的頁面。 

            7.其他常用配置 

            1) 自定義錯(cuò)誤配置節(jié) 

            <customErrors mode="RemoteOnly" defaultRedirect="ErrorPage.htm"> 

            <error statusCode="404" redirect="FileNotFound.htm" /> 

            </customErrors> 

            Mode: On表示啟用自定義錯(cuò)誤 

            Off表示禁用自定義錯(cuò)誤 

            RemoteOnly表示只顯示個(gè)遠(yuǎn)程客戶機(jī),本地調(diào)試顯示正常錯(cuò)誤 

            2) 應(yīng)用程序運(yùn)行時(shí)配置 

            <httpRuntime enable="true" executionTimeout="90" maxRequestLength="4096" /> 

            enable: true該應(yīng)用程序?yàn)閱?dòng)狀態(tài), false 相當(dāng)于關(guān)閉該站點(diǎn) 

            maxRequestLength:控制上傳內(nèi)容的大小,默認(rèn)4MB。 

            </httpRuntime> 

            3) 調(diào)試配置 

            <compilation debug="true"/> true為允許調(diào)試,否則為不允許調(diào)試 

            8.部署 

            1) 好處:隱藏源代碼,優(yōu)化程序運(yùn)行效果 

            2) 部署前的準(zhǔn)備:第一關(guān)閉調(diào)試,調(diào)試符號(hào)會(huì)降低性能,第二將工程改為Release(發(fā)行版)方式 

            3) 部署的方法: 

            31) XCopy,最簡(jiǎn)單方便的方式 使用如下:xcopy 源目錄 目標(biāo)目錄 /f /e /k /h 

            32) 復(fù)制網(wǎng)站(Copy Web Site),類似ftp上傳 先選擇復(fù)制網(wǎng)站,點(diǎn)擊復(fù)制即可 

            33) 發(fā)布網(wǎng)站(預(yù)編譯)最常用 右鍵-發(fā)布網(wǎng)站-選擇路徑,最通用 

            很抱歉,因?yàn)槟诰W(wǎng)易相冊(cè)發(fā)布了違規(guī)信息,賬號(hào)被屏蔽。被屏蔽期間他人無法訪問您的相冊(cè)。 

            去幫助中心,了解如何重新恢復(fù)服務(wù)。 

          posted on 2012-05-21 15:56 ** 閱讀(528) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊(cè)

          收藏夾

          C#學(xué)習(xí)

          友情鏈接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 湄潭县| 玉田县| 攀枝花市| 永城市| 西峡县| 临城县| 花莲县| 庆元县| 张家口市| 邓州市| 茌平县| 绵竹市| 昭觉县| 同德县| 临沧市| 华宁县| 察雅县| 九江县| 长丰县| 嘉兴市| 清水河县| 滨州市| 新营市| 九江县| 桑日县| 阜宁县| 宜兰市| 安福县| 九龙城区| 武冈市| 佛坪县| 巴林左旗| 西昌市| 淳化县| 嘉峪关市| 昔阳县| 岗巴县| 且末县| 漾濞| 区。| 玉门市|