<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    ASP.NET總結(jié)

    ASP.NET總結(jié)

    2009年09月24日

      第一章: 

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

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

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

      2.IIS:基于Windows系統(tǒng)的Web服務(wù)器的,ASP.NET的發(fā)布是基于IIS服務(wù)器的,類似JSP中使用Tomcat。在VS中,內(nèi)置了輕量級(jí)的Web服務(wù)器,為Cassini,無(wú)須配置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#代碼分開(kāi)放置,包含aspx文件和aspx.cs文件) 

      第二章: 

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

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

      1) Page:指向頁(yè)面自身的方式,整個(gè)頁(yè)面執(zhí)行期內(nèi)可使用該對(duì)象。<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”default.aspx.cs” Inherits=“_default”> 注意:AutoEventWireup設(shè)置頁(yè)面是否自動(dòng)調(diào)用網(wǎng)頁(yè)事件,如果該屬性設(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方法為頁(yè)面重定向操作。 

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

      使用方式 :Session[”user” ] = ”wkj”; 頁(yè)面判斷使用 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.頁(yè)內(nèi)數(shù)據(jù)傳遞:asp.net會(huì)發(fā)生頁(yè)面回傳,故可使用Page.IsPostBack判斷。一般在Page_Load中做頁(yè)面初始化時(shí)需要加上,以避免頁(yè)面回傳后重新初始化信息而取不到頁(yè)面輸入的值。 If( ! Page.IsPostBack) {初始化信息} 

      4.跨頁(yè)數(shù)據(jù)傳遞:支持跨頁(yè)傳遞需要設(shè)置PostBackUrl屬性到相應(yīng)路徑,支持PostBackUrl的控件只有Button,LinkButton,ImageButton。第二個(gè)頁(yè)面取值 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指示的頁(yè)面中托入SiteMapPath控件即可。如果站點(diǎn)地圖中不包含當(dāng)前頁(yè)面則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è):應(yīng)用于統(tǒng)一的布局。網(wǎng)站右鍵添加新項(xiàng)選擇母版頁(yè),默認(rèn)命名為MasterPage.master,可改名。設(shè)置母版頁(yè)樣式,可添加內(nèi)容頁(yè)。 

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

      第五章: 

      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ù)庫(kù)),AccessDataSource(access數(shù)據(jù)庫(kù)),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è)置分頁(yè)只要設(shè)置AllowPaging為true即可。 綁定字段設(shè)置7種 : 

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

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

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

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

      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)取頁(yè)面值。 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ù)庫(kù)中的單條記錄詳細(xì)信息,使用方式與GridView類似。只是需要設(shè)置傳遞參數(shù)。 

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

      第六章: 

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

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

      如果將IE設(shè)置為禁用腳本,而頁(yè)面發(fā)生回傳,驗(yàn)證沒(méi)有發(fā)生,正常情況下不希望沒(méi)有經(jīng)過(guò)驗(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提供了一些,一些常見(jiàn)的可見(jiàn)書上145頁(yè)。也可到網(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í),不刷新頁(yè)面 

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

      2. 在頁(yè)面添加如下語(yǔ)句 : <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ì)見(jiàn)書160頁(yè) 

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

      第七章: 

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

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

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

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

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

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

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

      { 

      //組合的sql語(yǔ)句 

      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分頁(yè) 

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

      Select Top 頁(yè)容量 * 

      from 表 

      where 條件 and id not in 

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

      from 表 

      where 條件 order by 排序條件) 

      order by 排序條件 

      2) SQLSERVER2005方式 

      Select * 

      From 

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

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

      Order by 排序條件 

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

      //1.聲明分頁(yè)類 

      PagedDataSource pdsBook = new PagedDataSource(); 

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

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

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

      pdsBook.AllowPaging = true; 

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

      pdsBook.CurrentPageIndex = CurrentPage; 

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

      //6.將分頁(yè)類綁定到DataList 

      dlBooks.DataSource = pdsBook; 

      dlBooks.DataBind(); 

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

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

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

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

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

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

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

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

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

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

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

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

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

      第八章: 

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

      常見(jiàn)的有: 

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

      ② FCKeditor,是國(guó)外一個(gè)開(kāi)源的項(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,單擊打開(kāi)按鈕。 

      4) 單擊“確定”按鈕。 

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

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

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

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

      常用屬性:Language(語(yǔ)言),注明”en-US”為英語(yǔ),改成”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ú)立的功能,可像控件一樣使用托拽方式 

      作用:頁(yè)面代碼的重用。 

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

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

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

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

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

      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ù)字水印圖片“粘貼”在封面圖片的右下角; 

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

      修改頁(yè)面中訪問(wèn)該圖片的路徑。 

      具體代碼: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> 

      說(shuō)明:verb:get,post,ftp等 

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

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

      具體代碼:P240 

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

      對(duì)IIS進(jìn)行處理:打開(kāi)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ù)訪問(wèn)層的類庫(kù)引用該類需要手動(dòng)添加System.Configuration類庫(kù)的引用,再在需要讀取配置節(jié)的頁(yè)面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è)面,未通過(guò)驗(yàn)證的用戶都轉(zhuǎn)到該頁(yè)面。 

      Timeout為表單驗(yàn)證的有效時(shí)間,即是cookie的過(guò)期時(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)前頁(yè)面關(guān)閉cookie失效 

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

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

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

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

      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)被屏蔽。被屏蔽期間他人無(wú)法訪問(wèn)您的相冊(cè)。 

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

    posted on 2012-05-21 15:56 ** 閱讀(524) 評(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)論排行榜

    主站蜘蛛池模板: 美女视频黄免费亚洲| 亚洲视频免费一区| 国产亚洲精品看片在线观看| 女bbbbxxxx另类亚洲| 日本v片免费一区二区三区| 亚洲精品永久在线观看| 午夜电影免费观看| 亚洲成av人无码亚洲成av人| 日韩毛片无码永久免费看| 亚洲七久久之综合七久久| 色视频色露露永久免费观看| 亚洲av无码一区二区三区人妖 | 一级毛片免费观看不收费| 亚洲精品国产高清不卡在线| 一级做受视频免费是看美女| 亚洲综合区小说区激情区| 91在线免费观看| 久久亚洲一区二区| 最近2019免费中文字幕视频三| 亚洲最大黄色网站| 免费无码AV片在线观看软件| 亚洲国产AV一区二区三区四区| 国产a级特黄的片子视频免费| 特级毛片在线大全免费播放| 国产国拍精品亚洲AV片| 久久精品成人免费网站| 免费在线观看污网站| 丰满妇女做a级毛片免费观看| 亚洲熟妇无码AV在线播放| 久久黄色免费网站| 亚洲成年人电影在线观看| 无码国产精品一区二区免费I6 | 无人在线观看免费高清| 亚洲日韩国产精品无码av| 成人一a毛片免费视频| 国产亚洲视频在线| 亚洲中文字幕无码爆乳AV| 永久免费在线观看视频| 亚洲精品美女久久7777777| 亚洲国产成人久久综合野外| 国内永久免费crm系统z在线|