随笔分类 -  ASP.NET

文件和流(序列化)
摘要:可以借助另一项技术把数据保存到文件--序列化。序列化是一个基于 .NET 流的高层模型。就本质而言,序列化允许你把整个活动的对象转换为一系列字节,并把这些字节写入 FileStream 之类的流对象中。以后,你可以重新读取这些字节从而重建原对象。 你的类必须符合下列条件才能使用序列化: 在类的声明前必须有 Serializable 特性 类的所有公有和... 阅读全文

posted @ 2012-08-21 10:56 SkySoot 阅读(3679) 评论(0) 推荐(0) 编辑

文件和流(使用流读写文件)
摘要:.NET Framework 在框架的多个领域里使用了流模型。流是允许你用相似的方式(作为顺序字节流)对待不同数据源的一种抽象。所有 .NET 流类从 System.IO.Stream 类继承。 流可以代表内存缓冲器中的数据、从网络连接获得的数据、从文件获得的或要写入文件的数据。 下面这段代码演示了如何创建一个新文件并用 FileStream 写入一个... 阅读全文

posted @ 2012-08-20 17:59 SkySoot 阅读(30748) 评论(5) 推荐(10) 编辑

文件和流(文件系统)
摘要:大多数 Web 应用程序依赖数据库来存储信息。在多用户场景中,数据库是无与伦比的。但还是会有不可避免的遇到访问存储在其他地方(如文件系统)的数据的问题。常见的示例有:读取其他程序产生的信息、为测试而编写的临时日志等。 使用文件系统 最基本的文件访问包括获取现有文件和目录的信息,以及执行典型的文件系统操作,如复制文件和创建目录。这些任务并没有设计真正的打开或写文... 阅读全文

posted @ 2012-08-20 10:41 SkySoot 阅读(1794) 评论(0) 推荐(0) 编辑

缓存(异步页面)
摘要:理解了 ASP.NET 缓存的基本原理后,现在可以深入研究一下另一种提升性能的技术:异步 Web 页面。这项特别的技术可以大大提高网站的可扩展性。它尤其适合用于那些包含大量比较耗时的查询数据库代码的页面。 要理解这一技术带来的潜在利益,需要对 ASP.NET 如何处理请求有较深的理解。从本质上来说,.NET 维持一个能够处理页面请求的线程池。获得一个新的请求时,ASP.NET 从中取出一个可用的线程并用它处理整个页面。这个线程实例化页面,运行事件处理代码,返回呈现的 HTML。如果 ASP.NET 获得请求的频率很高(比它处理这些请求还要快),那么未处理的请求将被保存在队列里。如果队列也满了. 阅读全文

posted @ 2012-08-16 16:07 SkySoot 阅读(2654) 评论(0) 推荐(0) 编辑

缓存(缓存依赖)
摘要:随着时间的流逝,数据源可能会因为其他活动而发生变化。如果你的代码使用了缓存,你可能并没有意识到这一变化而继续使用了缓存中过期的信息。为了帮助解决这一问题,ASP.NET 支持缓存依赖。 缓存依赖允许你让被缓存的项目依赖其他资源,这样当那个资源发生变化时,缓存项目就会被自动移除。 ASP.NET 有 3 种类型的依赖:依赖于其他缓存项目依赖于文件或文件夹依赖于数据库查询文件和缓存项目依赖 要创建缓存依赖,你需要创建一个 CacheDependency 对象并在添加依赖的缓存项目时使用它。例如,下面的代码创建一个缓存项目,它在一个 XML 文件被修改、删除、覆盖时自动从缓存中移除:CacheDe. 阅读全文

posted @ 2012-08-15 18:03 SkySoot 阅读(6819) 评论(0) 推荐(5) 编辑

缓存(数据缓存)
摘要:数据缓存是最灵活的一种缓存,但需要在代码中采用额外步骤才能使用它。数据缓存的基本原则是把创建代价高的项加入到一个特殊的内置集合对象内(Cache)。 这个对象和 Application 对象相似,对应用程序中所有客户的所有请求都有效。 不过他们还是有几个主要区别:Cache 对象是线程安全的:这意味着添加或移除项目不需要显式的锁定和解锁 Cache 集合。但 Cache 集合里的对象还需要自身是线程安全的。缓存中的项目是自动移除的:因为会自动移除,所以每次使用缓存对象都需要检查是否仍在缓存中,否则会得到一个 NullRenfrenceException 异常。缓存内的项目支持依赖性:可以把缓. 阅读全文

posted @ 2012-08-15 13:50 SkySoot 阅读(12436) 评论(0) 推荐(1) 编辑

缓存(输出缓存)
摘要:缓存是内存中保存创建代价高的信息副本的一种技术。服务器内存是有限的资源,如果在其中保存了太多的信息,某些信息就会保存到硬盘的页面文件上,这样可能会减慢整个系统。最佳的缓存策略(如内置在 ASP.NET 中的)是自我约束的。 信息的生命周期由服务器自行管理,如果缓存满了或者其他应用程序消耗了大量的内存,信息将会选择性的从缓存移除以保持性能。正是这种自我管理,使得缓存如此强大(也正因为如此,实现你自己的缓存是非常复杂的)。理解 ASP.NET 缓存 ASP.NET 有 2 种类型的缓存。你的应用程序能够也应该同时使用这 2 种类型,因为它们是互补的。输出缓存:这是最简单的缓存类型。它保存最终生成. 阅读全文

posted @ 2012-08-13 15:12 SkySoot 阅读(3605) 评论(0) 推荐(0) 编辑

GridView 高级技术
摘要:汇总脚注 GridView 的主要目标是显示一组记录,但是你还可以加入一些有趣的信息,如汇总数据。需要如下的操作:设置 GridView.ShowFooter 为 true ,这样可以显示脚注行(但没有数据)在 GridView.FooterRow 中加入内容 本例假设正在处理产品列表,一个简单的汇总可以显示产品总价或均价。第一步是确定何时计算这个信息。如果正使用手工绑定(DataSource),那么可以在数据对象绑定到 GridView 之间就读取它的值并进行计算。但如果使用的是声明性绑定(DataSourceID),就要借助别的技术了。<asp:SqlDataSource ID=&q 阅读全文

posted @ 2012-08-10 16:44 SkySoot 阅读(2514) 评论(0) 推荐(1) 编辑

富数据控件 DetailsView 和 FormView
摘要:DetailsView 和 FormView 擅长于每次都只显示一个记录,并包含一个可选的分页按钮。 DetailsView 和 FormView 的差别在于:DetailsView 显示表中的内容,而 FormView 更加灵活,可以在无表的情况下显示内容。如果打算使用模版,FormView 会提供最大的灵活性,否则,DetailsView 会提供一个更简单的模型。DetailsView DetailsView 被设计为每次只显示一个记录,它把信息段(字段或属性)放入到一个表的单独行中。只要你把 AllPaging 设为 true,它还允许你借助分页控件从一个记录浏览到另一个。<asp 阅读全文

posted @ 2012-08-09 16:01 SkySoot 阅读(1903) 评论(0) 推荐(0) 编辑

富数据控件 LstView(模版、分组)
摘要:ListView ListView 是一个非常灵活的数据绑定控件,根据定义的模版呈现自己的内容。和 Repeater 控件不同,ListView 增加了高级特性(如选择和编辑),它们的工作方式和 GridView 相同。它以最少的标记创建快速、简洁的 Grid 。 ListView 可以使一个需要更多工作的更灵活的 GridView,也可以使一个提供了更多细节的简化版本的 Repeater(ASP.NET 1.x 中包含的控件)。 ListView 包括更多的模版:ItemTemplate所有数据项或奇数行的内容AlternatingItemTemplate偶数行的内容ItemSeparato 阅读全文

posted @ 2012-08-09 15:09 SkySoot 阅读(750) 评论(0) 推荐(0) 编辑

富数据控件 GridView(模版)
摘要:如果希望在同一个单元格中显示多个值,或者希望在单元格中添加 HTML 标签和服务器控件而获得自定义内容的不受限的能力,就需要使用 TemplateField。 TemplateField 允许你为每一列定义一个完全定制的模版。你可以加入控件标签、HTML 元素、数据绑定表达式,可以完全按照你的方式布置一切!<asp:SqlDataSource ID="sourceEmployees" runat="server" ConnectionString="<%$ConnectionStrings:Northwind %>" 阅读全文

posted @ 2012-08-08 11:02 SkySoot 阅读(983) 评论(0) 推荐(0) 编辑

富数据控件 GridView(行选择、排序、分页)
摘要:GridView 行选择 GridView 内建支持选择。只需加入 ShowSelectButton 属性为 true 的 CommandField 列即可。CommandField 可以呈现为超链接、按钮或固定的图片。使用ButtonType 属性选择类型后,就可以通过 SelectText 属性(默认为 Select )指定文字或者通过 SelectImageUrl 属性指定图片的链接。<asp:CommandField ShowSelectButton="true" ButtonType="Image" SelectImageUrl=&quo 阅读全文

posted @ 2012-08-07 17:50 SkySoot 阅读(3764) 评论(1) 推荐(0) 编辑

富数据控件 GridView(定义列、格式化、样式)
摘要:GridView GridView 是一个用于显示数据的极为灵活的网格控件。它有很多的易用性,包括选择、分页、排序和编辑,可以很方便的通过模版扩展。 当把 GridView.AutoGenerateColumns 属性设置为 true 时,GridView 使用反射来检查数据对象并找到所有的字段或属性,以发现的次序为它们逐个创建列。 自动生成的列对于快速创建测试页面很有效,但通常缺少必需的灵活性。如果你希望隐藏列,改变它的次序,或者希望配置显示的某些方面,如格式化列的标题文字等等,在所有这些情形下,你需要把 AutoGenerateColumns 设为 false 并在 GridView 控件 阅读全文

posted @ 2012-08-06 17:46 SkySoot 阅读(16059) 评论(0) 推荐(0) 编辑

数据绑定(数据源控件 -- ObjectDataSource)
摘要:ObjectDataSource 在网页控件和数据访问组件间建立一个声明性的链接。ObjectDataSource 非常灵活,并可以和多种类型的组件一起工作。 要使用它,你的数据访问类必须遵守以下几个规则:所有逻辑必须包含在单个类中(如果使用不同的类选择和更新数据,那么必须把它们封装在一个更高层的类中)调用单个方法后,它必须提供查询结果查询结果必须是几条记录的组合,可以表现为集合、数组、DataSet、或实现 IEnumerable 的列表对象。每个记录由一个自定义对象通过公用属性公开它所有的数据可以使用实例方法或静态方法。不过,如果使用实例方法,类必须有一个默认的无参构造函数,以便 Obj. 阅读全文

posted @ 2012-07-26 13:36 SkySoot 阅读(6898) 评论(0) 推荐(0) 编辑

数据绑定(数据源控件 -- SqlDataSource)
摘要:数据源控件包括那些所有实现 IDataSource 接口的控件。.NET Framework 包含以下数据源控件:SqlDataSource:连接到任意 ADO.NET 数据提供程序的数据源。ObjectDataSource:连接到自定义的数据访问类。(这是大型专业 Web 应用程序倾向使用的数据源控件)AccessDataSource:连接到 Access 数据库文件。用于小型网站,更好的小范围数据解决方案是使用免费的 SQL Server Express。XmlDataSource:连接到 XML 文件。SiteMapDataSource:连接到描述站点导航信息的 web.sitemap. 阅读全文

posted @ 2012-07-25 17:16 SkySoot 阅读(24937) 评论(3) 推荐(1) 编辑

数据绑定(重复值绑定)
摘要:重复值绑定可以讲列表信息绑定到控件上。列表信息可以是自定义的对象集合(如 ArrayList 或 HashTable),也可以是行的集合(如 DataReader 或 DataSet)。 ASP.NET 带有几个支持重复值绑定的基本列表控件:所有用 <select> 标签呈现的控件:HtmlSelect、ListBox、DropDownListCheckBoxList(复选框列表) 和 RadioButtonList(单选按钮列表)BulletedList (各种符号的无序列表) 所有这些控件显示来自数据项的单值字段。这些控件共有的属性如下:DataSource它指定要显示的数据对 阅读全文

posted @ 2012-07-25 11:01 SkySoot 阅读(1158) 评论(0) 推荐(0) 编辑

数据绑定(数据绑定表达式 和 自定义表达式构造器)
摘要:数据绑定是把数据源和控件相关联并由控件负责自动显示数据的一种特性。数据绑定的关键特征是它是声明性的而不是编程性的,这样做的好处是清晰的分离网页中的控件和代码。单值绑定 支持单值绑定的控件允许使用数据绑定表达式绑定它们的部分属性。表达式在页面的 .aspx 标记部分输入并由 <%# 表达式 %> 分隔符组成。<%# EmployeeName %>它看起来有点像脚本块,但并不是脚本块。如果试图在标签中写入任何代码,将会得到一个错误。这里唯一可做的就是加入有效的数据绑定表达式。为了计算这样的表达式,必须调用 Page.DataBind()方法。ASP.NET 会检查页面上所有 阅读全文

posted @ 2012-07-24 12:31 SkySoot 阅读(1371) 评论(0) 推荐(0) 编辑

数据组件和 DataSet
摘要:在合理组织的应用程序中,从来都不会把数据访问代码直接嵌入到页面的后台代码中,而是被分离到一些精心设计的数据库组件中,这样它可以在多个页面甚至多个架构的系统中使用。DataSet 不是 ASP.NET 页面必需的,但它在导航、过滤、排序方面带来更多的灵活性。 还是通过一个示例来简单的演示一下创建一个数据库组件。数据库组件一般包括至少两个类:数据包类(实体类)数据库应用类(数据增删改查的执行类) 实体类 Code:(为了演示,并不包含全面的字段信息)public class EmployeeDetails{ public int EmployeeID { get; set; } pu... 阅读全文

posted @ 2012-07-23 14:27 SkySoot 阅读(1896) 评论(0) 推荐(0) 编辑

ADO.NET 基础(事务、通用的数据工厂)
摘要:事务 事务是一组必须全部成功或者全部失败的操作。事务的目标是保证数据总能处于有效一致的状态。例如,转账操作。 事务有 4 个被称为 ACID 属性的特征,ACID 是以下概念的缩写:Atomic(原子性):事务中所有步骤必须同时成功或失败Consist(一致性):事务使底层数据库在稳定状态间转换Isolated(隔离性):每个事务都是独立的实体,一个事务不应该影响同时运行的其他事物。Durable(持久性):在事务成功前,事务产生的变化永久的存储在媒质上,同时也必须维护日志以保证出现硬件故障数据库也能得以恢复。 这些事事务的理想特征,它们未必总能达到。执行事务时 RDBMS 需要锁定数据,这样 阅读全文

posted @ 2012-07-17 14:28 SkySoot 阅读(4118) 评论(3) 推荐(2) 编辑

ADO.NET 基础(防SQL注入)
摘要:与数据库交互的 Web 应用程序中最严重的风险之一:SQL 注入攻击。 SQL 注入是应用程序开发人员未预期的把 SQL 代码传入到应用程序的过程,它由于应用程序的糟糕设计而使攻击成为可能,并且只有那些直接使用用户提供的值构建 SQL 语句的应用程序才会受影响。 问题在于命令时如何被执行的。SQL 语句通过字符串的构造技术动态创建,文本框的值被直接复制到字符串中,他可能是这样的:string sql = "SELECT * FROM Orders where CustomerID = '" + txtID.Text + "'"; 在这个示 阅读全文

posted @ 2012-07-16 17:19 SkySoot 阅读(3109) 评论(0) 推荐(0) 编辑

导航