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);
        }
    }
  • 相关阅读:
    ASP.NET26 个常用性能优化方法
    git 合并 二进制文件
    git 状态管理
    git 分支管理,提交到远程服务器上面
    git 发布android 系统版本 修改版本型号 查看指定文件的修改记录
    使用git 发布android系统版本 1
    提取文本当中的汉字
    wpf 命名空间中不存在
    c# 调用c DLL 所传参数不正确
    用于主题检测的临时日志(233d1263-3c3c-43d0-a2fd-318ee6fd58db
  • 原文地址:https://www.cnblogs.com/wj/p/307704.html
Copyright © 2011-2022 走看看