zoukankan      html  css  js  c++  java
  • MagicAjax-NoStore,Session,Cache模式的区别

    NoStore:可用在NET1.1和2.0。
    Session和Cache:只能用在NET1.1,并且只能是InProc

    NoStore:不会保存控件的服务器资源
    Session和Cache:保存控件在服务器端,他们几乎是一样的只是存储的地方不同而已

    NoStore:控件的Load, Unload 事件会被触发
    Session和Cache:控件的Init, Load, PreRender, Unload事件不会被触发,但会触发AjaxCall, PreWriteScript和AjaxCallEnd,只要在类里面实现以下接口IAjaxCallEventHandler, IPreWriteScriptEventHandler即可

    一下是一个例子:在AjaxPanel里面有一个Button,点击Button增加一个新的HyperLink放到panel里面。

    private void Button1_Click(object sender, System.EventArgs e)
    {
        HyperLink link 
    = new HyperLink();
        link.Text 
    = "HyperLink" + AjaxPanel1.Controls.Count;
        AjaxPanel1.Controls.Add (link);
    }

    NoStore:新增的HyperLink只会添加一次(不符要求)
    Session和Cache:工作正常

    出现这种情况的原因就是:NoStore不会保存控件的资源,新增的HyperLink不会被保存,无论多少次ajax请求,AjaxPanel都是第一次请求时的状态。

    在NoStore模式下要解决这种情况,必须手工保存新创建的控件,然后页面请求时再次创建,代码如下:
    protected ArrayList links;

    private void Page_Load(object sender, System.EventArgs e)
    {
        links 
    = Session["links"as ArrayList;
        
    if (links == null)
        {
            links 
    = new ArrayList();
            Session[
    "links"= links;
        }
        AddLink();
    }

    private void Button1_Click(object sender, System.EventArgs e)
    {
        HyperLink link 
    = new HyperLink();
        links.Add(link);
        link.Text 
    = "HyperLink" + AjaxPanel1.Controls.Count;
        AjaxPanel1.Controls.Add (link);
    }

    private void AddLink()
    {
        
    foreach (HyperLink link in links)
        {
            AjaxPanel1.Controls.Add(link);
        }
    }
  • 相关阅读:
    Stupid Tower Defense
    Lifting the Stone
    城市地平线
    BestCoder Sequence
    Miaomiao's Geometry
    Rating
    Turn the pokers
    Peter's Hobby
    HTTP关键词收集
    HTTP出现前的协议
  • 原文地址:https://www.cnblogs.com/wj/p/307704.html
Copyright © 2011-2022 走看看