程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Asp.Net細節性問題精萃

Asp.Net細節性問題精萃

編輯:.NET實例教程


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-Horizontal
Align="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.正則表達式 控件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].C
ontrols[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只接受物理路徑,不接受虛擬路徑


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved