.net 学习笔记

公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。
---------------------------------------------------------------------
语言支持 C#,VB,JScript(这里之列出C#) (JScript语法类似Delphi,java?)
---------------------------------------------------------------------
访问索引属性
String s = Request.QueryString["Name"];
String value = Request.Cookies["key"];
---------------------------------------------------------------------
声明索引属性//Default Indexed Property
public String this[String name] {
    get {
        return (String) lookuptable[name];                                
    }
}
---------------------------------------------------------------------
声明简单属性
public String name {
  get {
    ...
    return ...;
  }
  set {
    ... = value;
  }
}
---------------------------------------------------------------------
声明和使用枚举// Declare the Enumeration
public enum MessageSize {
    Small = 0,
    Medium = 1,
    Large = 2
}
// Create a Field or Property
public MessageSize msgsize;
// Assign to the property using the Enumeration values
msgsize = Small;
---------------------------------------------------------------------
枚举集合
foreach ( String s in coll ) {
 ...
}
---------------------------------------------------------------------
自定义属性
// Stand-alone attribute
[STAThread]
// Attribute with parameters
[Obsolete("Obsolete message here")]
// Attribute with named parameters
[Obsolete("Obsolete message here", true)]
---------------------------------------------------------------------
Case 语句
switch (FirstName) {
  case "John" :
    ...
    break;
  case "Paul" :
    ...
    break;
  case "Ringo" :
    ...
    break;
  default:
    ...
    break; }
---------------------------------------------------------------------
异常处理
try {
    // Code that throws exceptions
} catch(OverflowException e) {
    // Catch a specific exception
} catch(Exception e) {
    // Catch the generic exceptions
} finally {
    // Execute some cleanup code
}
--------------------------------------------------------------------
字符串连接
// Using Strings
String s1;
String s2 = "hello";
s2 += " world";
s1 = s2 + " !!!";
// Using StringBuilder class for performance//性能
StringBuilder s3 = new StringBuilder();
s3.Append("hello");
s3.Append(" world");
s3.Append(" !!!");
--------------------------------------------------------------------
事件处理程序委托
void MyButton_Click(Object sender,EventArgs E) {
...
}
--------------------------------------------------------------------
声明事件
// Create a public event
public event EventHandler MyEvent;
// Create a method for firing the event
protected void OnMyEvent(EventArgs e) {
      MyEvent(this, e);
}
--------------------------------------------------------------------
向事件添加事件处理程序或从事件移除事件处理程序
Control.Change += new EventHandler(this.ChangeEventHandler);
Control.Change -= new EventHandler(this.ChangeEventHandler);
--------------------------------------------------------------------
转换
int i = 3;
String s = i.ToString();
double d = Double.Parse(s);
--------------------------------------------------------------------
实现接口
----C#
public class MyClass : IEnumerable {
    ...
    IEnumerator IEnumerable.GetEnumerator() {
    ...
    }
}
-----JScript
public class MyClass implements IEnumerable {
 ...
    function IEnumerable.GetEnumerator() : IEnumerator {
 ...
    }
}
--------------------------------------------------------------------
//带 Main 方法的类定义
using System;
public class ConsoleCS {
  public ConsoleCS() {
    Console.WriteLine("Object Created");
  }
  public static void Main (String[] args) {
    Console.WriteLine("Hello World");
    ConsoleCS ccs = new ConsoleCS();
  }
}
// csc /out:consolecs.exe /t:exe console.cs
--------------------------------------------------------------------
//标准模块
using System;
public class Module {
  public static void Main (String[] args) {
    Console.WriteLine("Hello World");
}

}
// csc /out:consolecs.exe /t:exe console.cs
--------------------------------------------------------------------
//防止url乱码,HttpUtility.UrlEncode(string)//
Response.Redirect("Controls_NavigationTarget.aspx?name=" + System.Web.HttpUtility.UrlEncode(Name.Text));
--------------------------------------------------------------------
--SqlDataReader 对从 SQL 数据库检索的数据提供仅向前的只读指针
--当使用 SqlCommand 时,必须显式打开和关闭 SqlConnection;
--SqlDataAdapter 自动为您处理如何打开连接。
SqlCommand myCommand = new SqlCommand("select * from Authors", myConnection);
myConnection.Open();
SqlDataReader dr = myCommand.ExecuteReader();
--------------------------------------------------------------------
当执行不要求返回数据的命令(如插入、更新和删除)时,也使用 SqlCommand。该命令通过调用 ExecuteNonQuery 方法发出,而该方法返回受影响的行数。
--------------------------------------------------------------------
注意 DataGrid 的 EnableViewState 属性已设置为 false。如果每个请求中都要填充数据,让 DataGrid 存储将通过往返行程由窗体发送来发送的状态信息没有好处。因为 DataGrid 在维护状态时存储其所有数据,适当时将其关闭很重要,这样可以提高页面性能。
--------------------------------------------------------------------
正则表达式
ValidationExpression="[0-9]{3}-[0-9]{2}-[0-9]{4}"     //must be digits: XXX-XX-XXXX
ValidationExpression="^[01]$"     //should be either 0 or 1
ValidationExpression='<%# InputValidator.AnsiNameExpressionString %>'
InputValidator.AnsiTwoCharacterStateErrorString

ValidationExpression="[/w/s-']+"       //only alphanumeric characters and limited punctuation
--------------------------------------------------------------------
 ASP.NET 页使用存储过程只是您迄今为止已经学习的 SqlCommand 对象知识的扩展。CommandText 只是存储过程的名称,而不是特殊查询文本。通过设置 CommandType 属性,向 SqlCommand 指出 CommandText 是存储过程。
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
--------------------------------------------------------------------
访问基于 XML 的数据
在本节开始已经提到,DataSet 以独立于实际数据源的方式被设计为抽象数据。通过将示例的重点从 SQL 改为 XML,可以明白这一点。DataSet 支持将 FileStream 对象用作参数的 ReadXml 方法。在这种情况下读取的文件必须同时包含希望读取的架构和数据。DataSet 期望数据在窗体中,如下面的示例所示。
<DocumentElement>
    <TableName>
        <ColumnName1>column value</ColumnName1>
        <ColumnName2>column value</ColumnName2>
        <ColumnName3>column value</ColumnName3>
        <ColumnName4>column value</ColumnName4>
    </TableName>
    <TableName>
        <ColumnName1>column value</ColumnName1>
        <ColumnName2>column value</ColumnName2>
        <ColumnName3>column value</ColumnName3>
        <ColumnName4>column value</ColumnName4>
    </TableName>
</DocumentElement>
每个 TableName 节与表中的一行相对应。下面的示例显示如何使用 DataSet 的 ReadXml 方法从 XML 文件读取架构和数据。注意,数据读入 DataSet 后,它和 SQL 数据无法区分——DataGrid 同样绑定到它.也可以分别读取数据和架构,使用 DataSet 的 ReadXmlData 和 ReadXmlSchema 方法.正如 DataSet 对 XML 数据支持阅读器方法,它也支持写入数据。
 ------------------------------------------------------------------------------------
当执行不要求返回数据的命令(如插入、更新和删除)时,使用 SqlCommand,而不是 SqlDataAdapter。该命令通过调用 ExecuteNonQuery 方法发出,而该方法返回受影响的行数。
-------------------------------------------------------------------------------------
简单的两层 Web 窗体页
外部组件的典型用途是执行数据访问。它简化了页中的代码,增强了可读性并将用户界面 (UI) 逻辑与系统功能分开。下面的实例阐释了简单的两层 Web 窗体页,它使用数据访问组件检索产品信息。数据访问组件采用其构造函数的单个参数来指定产品数据库的连接字符串。Web 窗体页调用该组件的 GetCategories 方法填充下拉列表,调用该组件的 GetProductsForCategory 方法显示用户所选类别的产品。

简单的三层 Web 窗体页
三层应用程序模型扩展了两层方案,在用户界面和数据访问逻辑之间包含了业务规则。此模型允许用户界面开发人员处理更高抽象化的级别,而不是通过低级数据访问组件 API 直接操作数据。中间业务组件通常强制业务规则并确保遵守数据库的关系和主键约束。下面的示例使用中间组件基于客户端输入的两位供应商 ID 计算折扣。
-------------------------------------------------------------------------------------
如果 A 类具有一个类型为 B 类的属性,则 B 的属性(如果有)称为 A 的子属性。下面的示例定义自定义控件 SimpleSubProperty,该控件具有 Format 类型的属性。Format 是具有两个基元属性的类——Color 和 Size,这两个属性反过来成为 SimpleSubProperty 的子属性。
注意 ASP.NET 具有设置子属性的特殊语法。下面的代码示例显示如何以声明方式设置 SimpleSubProperty 上的 Format.Color 和 Format.Size 子属性。“-”语法指示子属性。
<SimpleControlSamples:SimpleSubProperty Message="Hello There" Format-Color="red" Format-Size="3" runat=server/>
------------------------------------------------------------
使用 HtmlInputFile
HtmlInputFile 控件处理从客户端浏览器到服务器的二进制或文本文件的上载。文件上载适用于所有的 HTML 3.2 和更高版本的 Web 客户端。请注意,<form> 标记上的 Enctype 属性必须设置为 "multipart/form-data"。
------------------------------------------------------------
重要说明: 与 ASP 不同(在 ASP 中,函数可以在 <% %> 块中声明),所有的函数和全局页变量都必须在 <script runat=server> 标记中声明。在 <% %> 块内声明的函数现在将生成语法编译错误。
------------------------------------------------------------
数据绑定语法:<%# %>
ASP.NET 中内置的数据绑定支持使页开发人员能够以分层方式将控件属性绑定到数据容器值。位于 <%# %> 代码块中的代码只有在其父控件容器的 DataBind 方法被调用时才执行.下面的示例说明可以如何在 <asp:datalist runat=server> 控件内使用数据绑定语法。
------------------------------------------------------------
对象标记语法:<object runat="server" />
对象标记使页开发人员能够用基于标记的声明语法声明和创建变量的实例。下面的示例说明可以如何使用对象标记创建 ArrayList 类的实例。
<object id="items" class="System.Collections.ArrayList" runat="server"/>
运行时自动创建对象,然后可以通过 ID "items" 访问此对象。
------------------------------------------------------------
服务器端注释语法:<%-- 注释 --%>
服务器端包含语法:<-- #Include File="Locaton.inc" -->
-----------------------------------------------------------
当使用 SOAP 协议时,按值参数和按引用参数 (in/out) 都受支持。按引用参数可以沿两个方向发送值:向上发送到服务器和向下发送回客户端。当使用 HTTP GET/POST 将输入参数传递给 XML Web services 时,只支持一组有限的数据类型, 并且它们必须是按值参数。
-----------------------------------------------------------
默认情况下,为运行时错误显示的信息是调用堆栈(导致异常的过程调用链)。如果启用了调试模式,ASP.NET 将显示源代码中发生运行时错误的行号。调试模式是一个非常有用的应用程序调试工具。可以通过下列指令启用页级别调试模式:
<%@ Page Debug="true" %>
注意:运行调试模式将产生严重的性能损失。在部署已完成的应用程序之前,请务必禁用该模式.
-----------------------------------------------------------

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值