学习Asp.net一直有个疑问,页面每次请求都是新生成的,我知道Asp.net服务器控件可以利用viewstate自动保存控件的信息,但是自己定义的对象呢。
比如我有一个customer.aspx的叶面用来维护customer信息,在这个叶面有我自己定义的Customer类的对象myCustomer,每次访问页面的时候如何保存myCustomer对象的状态呢,难道每次都要新建这个对象(感觉很麻烦);还是用Session["MyCustomer"] = myCustomer(好像也有问题,如果一个用户访问了两个不同的customer,是不是会把其中的一个冲掉呢)。从C/S转到B/S一直有点晕
比如我有一个customer.aspx的叶面用来维护customer信息,在这个叶面有我自己定义的Customer类的对象myCustomer,每次访问页面的时候如何保存myCustomer对象的状态呢,难道每次都要新建这个对象(感觉很麻烦);还是用Session["MyCustomer"] = myCustomer(好像也有问题,如果一个用户访问了两个不同的customer,是不是会把其中的一个冲掉呢)。从C/S转到B/S一直有点晕
你的Customer类的myCustomer实例在回送后是不会保存状态的,只有通过在新生成的实例中设置前一个回送的状态,通常B/S中都是使用SESSION或APPLICATIN或viewstate保存的信息来重新设置新的这个实例。
public string Name
{
get
{
return (string)ViewState["Name"];
}
set
{
ViewState["Name"] = value;
}
}
MSDN里面有aspx的页面执行模型,和控件的生存周期,想要学好aspx,最好要看看这个..
http://www.microsoft.com/china/msdn/archives/library/dnaspnet/html/Asp11222001.asp
Session:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNetSessionState.asp关注作家Dino Esposito 我的体会:Web无状态,所有东西都是通过消息发送人发送的信息重新组装:),就是说Server发一个页面到Client,Server不再保持任何发过页面的信息(除非你用Session),当Client端PostBack时,Server根据原有页面代码和Client端的回传信息重新组装出页面供处理使用,处理结果再发给Client。
注意ViewState, Session, private variable, Page_Load(), if (! IsPostBack)的使用.
适当使用ascx.
还没来得及找本asp.net的书好好看看。