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().

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值