Asp.net學習筆記篇三(讀ASP.NET.3.5.Unleashed)

此部分乃《ASP.NET.3.5.Unleashed》讀書筆記
基礎部分
1
.命名空間導入可以在Web.Config中設置,這樣在Aspx頁面中可以去掉該命名空間導入聲明.
 <configuration>
   <system.web>
      <pages>
        <namespace>
            <add namespace="System.Net.Mail"/>
        <namespace>
      <pages>
   <system.web>
 <configuration>
2.傳統的HTML控件聲明爲Asp.net服務器控件後(runat="server"),你就可以方便的在程序中使用它.
  <span id="spanNow" runat="server">
  <script runat="server">
         void Page_Load(){
              spanNow.innerText = DataTime.Now.ToString("T");
         }
  </script>
  所有的服務器控件都是一個.Net類,將會在服務器段解釋執行.
3.頁面請求的事件序列
  1.PreInit
  2.Init
  3.InitComplete
  4.PreLoad     
  5.Load              //發生在所有控件事件之前
  6.LoadComplete
  7.PreRender         //發生在所有控件事件之後
  8.PreRenderComplete
  9.SaveSateComplete
  10.Unload
  Asp.net支持AutoEventWireUp屬性.如果該屬性設置爲True,Page_Load()方法將會處理Load事件;Page_PreRender()方法 將會處理PreRender事件.AutoEventWireUp屬性不支持所有事件,比如Page_InitComplete().

4.定義屬性
  在 ProperyTest類中定義一個屬性Message
  public class ProperyTest{
      private String _message;
      public String Message{
        get { return _message;}
        set { _message = value;}
     }
  }
  那麼我可以在Aspx這樣使用:
  void Page_Load()
  {
     ProperyTest pt = new ProperyTest();
     pt.Message = "hello world";
  }
  屬性實際是種訪問器的特殊方法.
  當讀取Message時,會自動調用get方法;當設置Message時,會調用set方法.不實現set方法的屬性是隻讀.
 
  .Net3.0後引入了自動屬性(Automatic Properties)的功能,它爲屬性的定義提供了更加簡短的方法.
  我們定義一個 PropertyTest2,它有三個屬性.
  public class PropertyTest2{
      public String Message { get;set; }
      public int Age {get;set;}
      public String Name {get;set;}
  }
  這種形式和在interface定義屬性的形式一樣的,但表達的含義是不同的.
5.初始化器(Initializers)
   數組的初試化形式一般如下:
           int[] array= new int[] {1,3,4,2};
  .Net 3.0後,對象和集合也可以使用類似數組的初始化形式了.
  5.1 對象初始化器
      PropertyTest2 pt1 = new PropertyTest2{Message="test1",Age=25,Name="yang"};
      PropertyTest2 pt2 = new PropertyTest2{Message="test2",Age=26,Name="huang"};
  5.2 集合初試化器
      List<String> list1 = new List<String>{"str1","str2","str3"};
      List<PropertyTest2> list2 = new List<PropertyTest2>{pt1,pt2};
6.擴展方法(Extension Methods)
  在JavaScript中可以通過對象的prototype屬性來給對象添加擴展新的方法
  .Net3.0後可以通過聲明一個靜態類靜態方法來實現方法擴展.
  public static class MyExtensions{
      public static String HtmlEncode(this String str) { //給String類添加HtmlEncode()方法
            return System.Web.HttpUtility.HtmlEncode(str);
      }
  }
  this關鍵字說明該新增的方法將被用於String類型
  擴展方法通過對象來調用
      String str = "<script>alert('extension!')</script>";
                str = str.HtmlEncode();

7.ADO.Net支持的兩種數據訪問模式
  7.1 連接模式   (connected model)
      利用Connection,Command,DataReader檢索數據
      使用DataReader要比DataSet性能好些
  7.2 非連接模式 (disconnected model)
      利用DataAdapter,DataSet,DataTable,DateView等
8.數據庫連接池
  當你使用SqlConnection時,已啓動了數據庫連接池.默認情況下,ADO.NET框架最大能保持100個數據庫連接.
  當使用完畢時,請調用SqlConnection.Close()方法,把數據庫連接返回到連接池中
  以下代碼用來顯示當前數據庫的所有用戶連接數:

數據訪問部分
1.數據綁定控件(DataBound Controls)
  有三種類型的數據綁定控件:列表類型控件(list controls),表格類型控件(tabular controls),級聯類型控件(hierarchical controls)
  1.1 列表類型控件
      ASP.NET 3.5包含如下五種列表控件:
      1 BulletedList
      2 CheckBoxList
      3 DropDownList
      4 ListBox
      5 RedioButtonList
      所有的五種列表控件繼承於ListControl基類,所以五種類型都繼承了很多相同的屬性和方法.
  1.2 表格類型控件
      ASP.Net3.5包含六種表格類型控件:
      1 GridView
      2 DataList
      3 Repeater
      4 ListView(3.5新增)         一般和DataPager控件一起使用
      5 DetailsView
      6 FormView
  1.3 級聯類型控件
      ASP.NET包含兩種級聯類型控件:
      1 Menu
      2 TreeView
2.數據源控件(DataSource Controls)
  ASP.NET3.5版本中有六種類型的數據源控件也可以分爲兩類
  2.1 類型一
     1 SqlDataSource                  以sql形式提供數據
     2 LinqDataSource(3.5新增)    以Linq to Sql 提供數據
     3 AccessDataSource           提供Access數據
     4 ObjectDataSource            以業務對象形式提供數據
     以上四種繼承於DataSourceControl基類,可以用作表格顯示數據源,它們都支持如下幾種參數對象:
     1 Parameter
     2 ControlParameter
     3 CookieParameter
     4 FormParameter
     5 ProfileParameter
     6 QueryStringParameter
     7 SessionParameter    
     
  2.2 類型二
     1 XmlDataSource                以XML形式提供數據
     2 SiteMapDataSource          以Site Map Provider提供數據
     以上兩種繼承於HierarchicalDataSourceControl基類,可以用作表格顯示和級聯顯示數據源
3.編程式數據綁定
  每一個DataBound Control 都有DataSource屬性和DataBind()方法,通過使用它們你可以採用編程形式來關聯DataBound Control和一個data Source.
  ps ASP.NET 1.x Framework只支持編程式數據綁定,第一個版本不包含DataSource Controls.
4.數據綁定表達式
  <%# expression >
  當數據綁定事件發生時,該表達式纔會被計算
  ex.<asp:SqlDataSource id="ds1" ConnectString="" SelectCommand="select Id,Title From Movies" runat="server"/>
     <asp:Repeater id="rep1" DataSourceId="ds1" runat="server">
       <ItemTemplate>
          <asp:HyperLink id="h1" Text='<%# Eval("Title")>' NavigateUrl='<%# Eval("Id","Details.aspx?id={0}")>'>
       </ItemTemplate>
    <asp:Repeater>
  Page類的受保護的(protected)Eval()方法實際是調用了靜態方法DataBinder.Eval().

發佈了45 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章