上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页
  2011年4月15日
摘要: 代码片段: <input runat="server" id="lastName" type="text" value="Test"/> 经过ASP.NET运行库处理后,上述声明生成以下HTML代码: <input name="myName" id="myName" type="text" value="Text" /> 注意:服务器端ID属性被展开为两个HTML属性:Name和ID。这是考虑到浏览器的兼容性。但 阅读全文
posted @ 2011-04-15 21:40 辛勤的代码工 阅读(861) 评论(0) 推荐(0) 编辑
  2011年4月12日
摘要: runat属性是ASP.NET控件编程的关键。如果aspx源码中的标签在声明时没有带runat属性,那么它将被视为纯文本并逐字输出。否则,该标签的内容会被映射到服务器控件上,在页面的生命周期中进行处理。两大类服务器控件 HTML服务器控件:通过服务器端的类,HTML控件被映射为HTML标签,这些编程接口如实表现了相应HTMP标签的属性集合。 Web服务器控件:Web控件更抽象,其API没有严格遵循HTML语法。功能上讲,Web控件是HTML控件的扩展集。Web控件带有更多的方法、属性、事件,能更充分参与页面生命周期。ASP.NET服务器控件的通性 所有ASP.NET服务器控件都继承自Syst. 阅读全文
posted @ 2011-04-12 12:25 辛勤的代码工 阅读(648) 评论(0) 推荐(0) 编辑
  2011年4月11日
摘要: 每次客户端请求都会创建页面实例,它的执行使自身及其包含的控件经历页面生命周期的各个阶段。页面的执行起始于HTTP运行库调用ProcessRequest时,该方法将启动页面并控制它的生命周期。 页面的生命周期可分为三个阶段:建立阶段、回发阶段、终结阶段。每个阶段会有子阶段,分别由若干步骤和事件引发点组成。页面的建立 当HTTP运行库实例化一个页面类对当前请求进行处理时,页面的构造函数会生成一个控件树,该控件树会关联到实际的类,这些类是由页面解析器在扫描ASPX源代码后创建的。当请求的处理过程开始时,所有子控件和页面的内部对象(如HTTP上下文对象、请求对象和响应对象等)都会被设置。 页面生命周. 阅读全文
posted @ 2011-04-11 22:05 辛勤的代码工 阅读(661) 评论(0) 推荐(1) 编辑
摘要: System.Web.UI.Page类提供了ASP.NET应用程序从aspx文件创建的所有对象的基本行为,该类派生自TemplateControl并实现了IHttpHandler接口。 TemplateControl是抽象类,为ASP.NET页面和用户控件提供了一组基本的功能。该类的上一层次为Control类,Control类定义了由ASP.NET服务器端元素(页面、控件和用户控件)共享的属性、方法和事件。 TemplateControl类实现了INamingContainer接口,因此,Page类还是其所有子控件的“命名容器”。控件的命名容器是实现INamingContainer接口的第一. 阅读全文
posted @ 2011-04-11 01:11 辛勤的代码工 阅读(953) 评论(0) 推荐(1) 编辑
  2011年4月10日
摘要: 页面的编译 特定.aspx资源的程序集的生成分为两个步骤进行。首先,该资源文件的源代码会被解析,根据得到的信息,从Page类(或Page的派生类)派生出相应的类。然后,动态生成的类会被编译为程序集,该程序集之后会被缓存到ASP.Net专用的临时目录下。 只要链接的aspx源文件没有被更改,且整个应用程序没有重启,已编译的页面就一直存在。对已链接aspx文件的任何更改,将使相关程序集变为无效,并在该页面下一次被请求时,强制HTTP运行库创建新的程序集。 编辑web.config和global.asax之类的文件会导致整个应用程序重启。在这种情况下,在某个页面被请求时,所有页面会被重新编译。如果b 阅读全文
posted @ 2011-04-10 23:19 辛勤的代码工 阅读(1341) 评论(1) 推荐(2) 编辑
  2011年4月7日
摘要: Linq To SQL 无非是把合法的Linq查询表达式应用于存储在关系数据库中的数据。除查询本身外,Linq To SQL还提供了许多位于System.Data.Linq.dll程序集中的类型,便于代码库与物理数据库引擎间的数据交互。 Linq To SQL的主要目的是在关系数据库和它们进行的交互编程逻辑间提供一致性。通过使用Linq查询表达式和定义的实体类,及DataContext类型,你可以进行所有预期的数据库的增、删、改、查操作,及定义事务性上下文,创建新的数据库实体或整个数据库、调用存储过程和其他以数据库为中心的活动等。 此外,Linq To SQL中的类型可与标准的ADO.NET. 阅读全文
posted @ 2011-04-07 12:36 辛勤的代码工 阅读(537) 评论(2) 推荐(0) 编辑
摘要: 回顾DataSet和DataTable 使用各种DataSet和DataTable索引器时,可通过一种相当直接却是弱类型的方式来数据交互。例如:static void PrintDataWithIndexers(DataTable dt){ //输出DataTable for(int curRow = 0; curRow < dt.Rows.Count; curRow++) { for(int curCol = 0; curCol < dt.Columns.Count; curCol++) { Console.Write(dt.Rows[curRow][curCol].ToStri 阅读全文
posted @ 2011-04-07 10:53 辛勤的代码工 阅读(573) 评论(0) 推荐(0) 编辑
  2011年4月6日
摘要: 要让一个对象支持.Net序列化服务,用户必须为每一个关联的类加上[Serializable]特性。如果类中有些成员不适合参与序列化(比如:密码字段),可以在这些域前加上[NonSerialized]特性。 C#支持三种序列化格式:二进制格式(使用BinaryFormatter序列化器)、SOAP格式(使用SoapFormatter序列化器)、XML格式(使用XmlSerializer序列化器)。这三种序列化器的区别如下: 二进制格式可序列化一个类型的所有可序列化字段,不管它是公共字段还是私有字段。SOAP格式和XML格式仅能序列化公共字段或拥有公共属性的私有字段,未通过属性公开的私有字段将被. 阅读全文
posted @ 2011-04-06 17:57 辛勤的代码工 阅读(1457) 评论(0) 推荐(0) 编辑
摘要: 可能您会觉得使用委托的BeginInvoke方法实现异步操作太过繁琐了,我们在多数情况下仅仅是希望启动一个线程进行一些工作,完成后执行一个回调函数就OK了,并没有太多其他的需求。有没有更方便的方法实现异步操作呢?就像事件那样简单,注册一个异步操作函数,待函数执行完毕后再自动执行一个回调函数,而异步线程启动、运行、结束之类的操作都由程序自动完成。答案是有的,这就是System.ComponentModel.BackgroundWorker类的功能。 我们先看代码:using System;using System.Collections.Generic;using System.Text;us. 阅读全文
posted @ 2011-04-06 14:50 辛勤的代码工 阅读(2301) 评论(0) 推荐(2) 编辑
  2011年4月5日
摘要: Linq查询运算符设计用于任何实现了IEnumerable<T>接口的类型。但System.Collections中传统的非泛型容器类未实现IEnumerable<T>接口,在这些非泛型容器上怎样执行Linq查询呢? 我们可以使用扩展方法Enumerable.OfType<T>()扩展方法将非泛型容器转换为IEnumerable<T>类型后,再执行查询。Enumerable.OfType<T>扩展方法的原型为: public static IEnumerable<T> OfType<T>(this IEnume 阅读全文
posted @ 2011-04-05 21:34 辛勤的代码工 阅读(435) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页