Asp.Net細節性問題技巧精萃

來源:互聯網
上載者:User
 1.<%=...%>與<%#... %>的區別:
   答:<%=...%>是在程式執行時調用,<%#... %>是在DataBind()方法之後被調用
  
  2.控制項接收哪些類型資料?
   答:接收Bind的控制項,一般有DropDownList,DataList,DataGrid,ListBox這些集合性質的控制項,而被捆綁 的主要是ArrayList(數組),Hashtable(哈稀表),DataView(資料檢視),DataReader這四個,以後我們就可以 對號入座,不會出現DataTable被捆綁的錯誤了:)
  
  3.DataBind,獲得的資料,系統會將其預設為String,怎樣轉化為其它的類型?
   DataBinder.Eval(Container.DataItem,"轉換的類型","格式")
   最後一個"格式"是可選的,一般不用去管他,Container.DataItem是捆綁的資料項目,"轉換類型"指的是 Integer,String,Boolean這一類東西.
  
  4.主要命名空間:
   <% @ Import Namespace="System.Data" %> 處理資料時用到
   <% @ Import Namespace="System.Data.ADO" % > 使用ADO.net ; 時用到
   <% @ Import Namespace="System.Data.SQL" %> SQL Server 資料庫專用
   <% @ Import Namespace="System.Data.XML" %> 不用看處理XML用到
   <% @ Import Namespace="System.IO" %> 處理檔案時用到
   <% @ Import Namespace="System.Web.Util" %> 發郵件時大家會用到
   <% @ Import Namespace="System.Text" %> 文本編碼時用到
  
  5.Connections(SQLConection 或者 ADOConnection)的常用屬性和方法:
   | ConnectionString 取得或設定連結資料庫的語句
   | ConnectionTimeout 取得或設定連結資料庫的最長時間,也是就逾時時間
   | DataBase 取得或設定在資料庫伺服器上要開啟的資料庫名
   | DataSource 取得或設定DSN,大家不會陌生吧:)
   | Password 取得或設定密碼
   | UserID 取得或設定登陸名
   | State 取得目前連接的狀態
   | Open() 開啟連接
   | Close() 關閉連接
   | Clone() 複製一個連接。(呵呵,綿羊可以Connection我也可以)
   樣本:
   SQLConnection myConnection = new SQLConnection();
   myConnection.DataSource = "mySQLServer";
   myConnection.Password = "";
   myConnection.UserID = "sa";
   myConnection.ConnectionTimeout = 30;
   myConnection.Open();
   myConnection.Database = "northwind";
   myConnection.IsolationLevel = IsolationLevel.ReadCommitted
  6.Command常用的方法和屬性
   | ActiveConnection 取得或設定連接Connections
   | CommandText 執行的SQL語句或儲存過程(StoredProcedure)名
   | CommandTimeout 執行的最長時間
   | CommandType Command操作的類型(StoredProcedure,Text,TableDirect)三種,預設Text
   | Parameters 操作儲存過程時使用
   | Execute() 執行SQL語句或儲存過程
   | ExecuteNonQuery() 同上,區別在於不返回記錄集
   | Clone() 複製Command
   樣本:
   string mySelectQuery = "SELECT * FROM Categories ORDER BY CategoryID";
   stringmyConnectString="userid=sa;password=;database=northwind;server=mySQLServer";
   SQLCommand myCommand = new SQLCommand(mySelectQuery);
   myCommand.ActiveConnection = new SQLConnection(myConnectString);
   myCommand.CommandTimeout = 15;
   myCommand.CommandType = CommandType.Text;< /FONT > 
   
   
     7.開啟和關閉資料庫兩種方法:
   1.MyConnection.Open(); //開啟連接
   MyConnection.Close();
   2.MyCommand.ActiveConnection.Open();
   MyCommand.ActiveConnection.Close()
  
  8.使用DataSet,在資料庫中增加、修改、刪除一個資料
   a.添加資料
   DataRow dr=MyDataSet.Tables["UserList"].NewRow();
   dr["UserName"] = "周訊";
   dr["ReMark"] = "100";
   dr["Comment"] = "漂亮MM";
   MyDataSet.Tables.Rows.Add(dr);
  
   b.修改資料
   MyDataSet.Tables["UserList"].Rows[0]["UserName"]="飛刀大哥";
  
   c.刪除資料
   MyDataSet.Tables["UserList"],Rows[0].Delete();
  
   d.恢複資料
   if(MyDataSet.HasErrors)
   {
   MyDataSet.RejectChanges();
   }
  
   e.探測DataSet是否有改動
   if(MyDataSet.HasChanges)
   {
   //儲存代碼
   }else{
   //因為沒有變化,所以不用儲存,以節省時間
   }
  
   f.更新資料庫
   MyComm.Update(MyDataSet); //更新資料庫中所有的表
   MyComm.Update(MyDataSet,"UserList"); //更新某個表

9.DataGrid實現分頁功能
   AllowPaging="True" //是指允許分頁,這個是最主要的。有了它,我們才能分頁。
   PageSize="5" //是指定每頁顯示的記錄數,如果不寫,就會預設為10條。
   PagerStyle-HorizontalAlign="Right" //是指定分面顯示的定位,預設是Left
  
   PagerStyle-NextPageText="下一頁" //把<>改為上一頁和下一頁字串
   PagerStyle-PrevPageText="上一頁"
  
   PagerStyle-Mode="NumericPages" //把<>改為123數字顯示
  10.顯示一共有多少頁,並且報告當前為第幾頁
   當前頁是:<font color=red><%=DataGrid1.CurrentPageIndex+1%></font><br>
   總頁數是:<font color=red><%=DataGrid1.PageCount%></font><br>
  11.個人化分頁
   程式員大本營之"親密接觸ASP.Net(14)"有完整代碼
  
  12.要將頁面重設為有效狀態
   IValidator val;
   foreach(val in Validators)
   {
   Val.IsValid = true;
   }
  13.重新執行整個驗證序列
   IValidator val;
   foreach(val in Validators)
   {
   Val.Validate();
   }
  14.禁用用戶端驗證
   <%@ Page Language="c#" clienttarget=downlevel %>
  15.Repeater、DataList和DataGrid控制項用途"
   這些控制項可以簡化幾種常見的 Web 應用程式方案,包括報表、購物車、產品列表、查詢
   結果和導覽功能表。 Repeater是唯一允許在其模板中存在 HTML片段的控制項.
  16.Server.Execute("another.aspx")和Server.Transfer("another.aspx")區別:
   Execute是從當前頁面轉移到指定頁面,並將執行返回到當前頁面
   Transfer是將執行完全轉移到指定頁面
  17.XML檔案中可以自己存有架構,也可以存在於*.xsl檔案中,但必須通過xmlns屬性在xml文檔的根節點中指定該資訊,如下所示:
   <rootelement xmlns="x-schema:scheduledSchema.xsl">
  18.XML檔案的讀取
   FileStream myfs=new Filestream(Server.MapPath("xmldtagrid.xml"),FileMode.Open,FileAccess.Read);
   StreamReader myreader=new StreamReader(myfs);
   DataSet myds=new DataSet();
   myds.ReadXml(myreader);
  19.Regex 控制項RegularExpressionValidator
   符號 含義
   ^ 指定檢查開始處
   $ 指定檢查結束處
   [] 檢查輸入的值是否與方括弧中的字元之一相匹配
   \W 允許輸入任何值
   \d{} "\d"指定輸入的值是一個數字,{}表示已指定資料類型的出現次數
   + 表明一個或多個元素將被添加到正在檢查的運算式
   樣本:電子郵件格式(具有@號,且以.com/.net/.org/.edu結尾)
   validationexpression="^[\w-]+@[\w-]+\.(com|net|org|edu)$"
  20.DataGrid控制項中資料操作重要語句:
   屬性:DataKeyField="userid" //設userid為表的主鍵,無法將該欄位的值更新到資料庫,最好設表的主鍵為DataGrid的主鍵
   SqlCommand.Parameters["@userid"].Value=dg.DataKeys[(int)e.Item.ItemIndex]; //檢索所要更新的行的主鍵(將當前選定的行的 主索引值賦給命令的一個參)數
   SqlCommand.Parameters["@fname"].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text; //為參數賦予已修改的行值
  21.自訂控制項:
   a.使用者控制項(ASP建立頁面一樣)
   (I). 建立頁面,拖入控制項,設定屬性/方法. <% @Control Language="C#" Debug="True" %>中的@Control指令來定義此頁 將包含控制項代碼
   (II) 儲存為*.ascx檔案,如a.ascx.
   (III).使用: 頭<%@Register Tagprefix="MyFirstControl" TagName="MyLbl" Src="a.axcs" %>
   //Tagprefix為控制項的首碼,像ASP:TextBox中的ASP
   //TagName用於指定自訂控制項的名稱
   //Src指定控制項檔案源
   身體:<MyFirstControl:MyLbl runat="Server" id="AllMine" MyText="成功了" />
   b.使用C#建立自訂控制項
   (I). 建立純程式碼檔案,繼承基類Control,並儲存為*.cs,如a.cs.
   (II).將代碼編譯產生程式集: csc /t:library /r:System.dll,System.Web.Dll a.cs
   //library告訴C#編譯器產生程式集
   // /r:System.dll System.Web.Dll告訴C#編譯器引用指定的程式集
   (III).將產生dll檔案放在bin目錄中
   (IV).使用: <% @Register TagPrefix="Mine" Namespace="MyOwnControls" Assembly="a" %>
  22.複合控制項注意事項:
   public class MyCompositin:Control,INamingContainer //INamingContainer:如果在頁面上有多個此控制項執行個體,則此結口可以給每 {} //個執行個體有唯一標誌
  
   this.EnsureChildControls();//表示將複合控制項的子控制項都呈現到頁面上,此方法檢查伺服器控制項是否包含子控制項
  
   CreateChildControls
  23.Button/LinkButton/ImageButton/HyperLink什麼時候用?
   1.Button和ImageButton用於將資料傳遞迴伺服器.
   2.Hyperlink用於在頁面之間導航
   3.LinkButton用於將資料儲存到伺服器或訪問伺服器上的資料
  24.跟蹤調試
   跟蹤:
   1.頁層級跟蹤: 在頁的開頭包括如下的頁指令<%@ Page Trace="True" TraceMode="SortByCategory/SortByTime" %>
   自訂訊息:
   Trace.Write("這裡為要顯示的字串");
   Trace.Warn("這裡為要顯示的字串"); //與Trace.Write相同,只是字型為紅色
   檢查是否使用了跟蹤
   例句: if(Trace.IsEnabled) { Trace.Warn("已啟用跟蹤")}
   2.應用程式層級跟蹤: 在Web.config檔案的<System.Web>節中 <trace enabled="true" pageOutput="true"/>
  25.設定緩衝:
   1.輸出緩衝:
   I.版面設定: 將 <%@ OutputCache Duration="120" VaryByParam="none" %> 加在需要快取頁面的開頭
   注釋:在請求該頁的後兩分鐘之內,輸出內容不變
   II.編程方式設定:
   主要使用類System.Web.HttpCachePolicy類下的方法
   (1). Response.Cache.SetExpires(DateTime.Now.AddSeconds(120)); //在此方法中必須指定到期時間,如本語 //句為兩分鐘
   (2). Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));
   Response.Cache.SetSlidingExpiration(true); //"可調到期",主要用於那些開始訪問量大,但隨後訪問 //量平衡的情況
   功能:第一句設定緩衝到期時間,第二行開啟 sliding expiration(可調到期).
   2.資料緩衝:
   (1).DataView mySource; (2).給mySource賦值;
   (3).Cache["myCache"]=mySource; (4).mySource=(DataView)Cache["myCache"]
  26.部署: 直接複製到產品伺服器即可 複製語句: XCOPY <source_path> <destination_path> //XOPY只接受實體路徑,不接受虛擬路徑

                                                                                                                                                               本文轉載於‘中國IT實驗室’

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.