本来不明白asp.net是如何封装http的request的,得到 Page 对象的
今天看了
Understanding ViewState and Postback Processing in ASP.NET applications 和
Understanding ASP.NET View State
终于明白了原来 PostBack 就是asp.net实现 request 功能的机制(准确的说是类request功能,具体实现应该比较复杂,不过能理解就好)
Postback Data 就是 request 对应参数,
而 Postback Event 则相当于 request 的发起。
之前为了方便,都是在 Page 中用私有字段保存一些信息,但是发现一旦页面提交 form 之后,在 (!IsPostBack) 块内已经初始化过的私有字段又回到了 null 状态。
现在,了解了 Postback 的机制,就明白了,页面 form 提交后,浏览器上显示的页面已经是另一个由 Postback 触发的新 Page 了,由于是由Postback触发,这个Page具有 IsPostBack==true 的属性,因此在(!IsPostBack) 块内执行的初始化代码就不再执行。
因此,还是要像其他 framework 一样,应该用 Session 而不是 Page 的私有变量保存相关的信息。
Sunday, August 31, 2008
Saturday, August 30, 2008
数据源问题 (DataSource)
首先,作为 DataSource 的对象要具有 IEnumerable 接口,比如 collections, arrays, DataSets, DataReaders, DataViews
Sunday, July 13, 2008
C# 类型相关 - 判断类型
直接判断类型
var.GetType()==typeof(sometype)
判断是否有继承关系
class A
class BA : A
object o = new BA();
o is A // == true;
var.GetType()==typeof(sometype)
判断是否有继承关系
class A
class BA : A
object o = new BA();
o is A // == true;
在存储过程里使用字符output参数
需要设置 DbParameter 对象的 Size
param = comm.CreateParameter();
param.ParameterName = "@TextBody";
param.Direction = ParameterDirection.Output;
param.DbType = DbType.String;
param.Size = 1000;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.ParameterName = "@TextBody";
param.Direction = ParameterDirection.Output;
param.DbType = DbType.String;
param.Size = 1000;
comm.Parameters.Add(param);
Saturday, July 12, 2008
使用 Master 页时,对 ContentPlaceHolder 的访问
主要用于 Page_Load() 方法中
因为这个方法不能从事件处理机制中直接得到想要的控件
因为这个方法不能从事件处理机制中直接得到想要的控件
ContentPlaceHolder content = (ContentPlaceHolder)Page.Master.FindControl("ContentPlaceHolder1");
TextBox tb = (TextBox)content.FindControl("TextBox1");
Wednesday, July 9, 2008
Subscribe to:
Posts (Atom)
