我有一个页面,里面有个表单,我想点提交把数据存到数据库后页面不变可以第多次次提交,但是需要把每一次提交的值存到页面上
多次提交的值最后再处理页面存的数据。
我想知道这些数据存到哪?内容有点多,不想存在Session里,最好也不提交到客户端再从客户端传回来。    private List<Photo> UploadPhotoList;    //上传
    protected void Button2_Click(object sender, EventArgs e)
    {
        Photo photo = new Photo();
        photo.PhotoName = txtPhotoTitle.Text.Trim();
        ............
        ............
        ............
        PhotoManager.uploadPhoto(photo);        if (UploadPhotoList == null)
        {
            UploadPhotoList = new List<Photo>();
        }
        UploadPhotoList.Add(p);
        Label1.Text = UploadPhotoList.Count.ToString() ;
        
这样不行。

解决方案 »

  1.   

    不想存在Session里,最好也不提交到客户端再从客户端传回来。
    刚才没注意到这句话
    不过,如果数据多到不方便这样做的话,
    是否考虑思路问题。
    放到缓存里面去。
      

  2.   

    foren_whb好勤奋的刷楼啊,到底离升星还多远了呢
      

  3.   

    我收藏的代码:Session、Cookie、ViewState  、Cache 的使用
    (1)Session
    信息量大小      --- 保存时间      -------        应用范围      -----保存位置小量、简单的数据 --- 用户活动时间+一段延迟时间(20分钟)--- 单个用户 --- 服务端
    //存放信息
    Session[“nameID”] = TextBox1.Text;
    //读取信息
    String NameID = Session[“nameID”].ToString();Session.Remove("user_name_gly");
    Response.Redirect("admin_login.aspx");
    ----------------------------
    (2)Cookie 
    我用的:
    存放信息:
    Response.Cookies["username"].Value="gzpfw"; 
    Response.Cookies["username"].Expires=DateTime.Now.AddDays(1); 
    Response.Redirect("zcx.aspx");
    if(Request.Cookies["username"]==null) 

       Response.Redirect("admin_login.aspx");

    读取信息:Label1.Text=Request.Cookies["username"].Value;安全退出:Response.Cookies["username"].Expires=DateTime.Now.AddDays(-1);
    ==================================================================
    小量、简单的数据--可以根据需要决定-----单个用户-------客户端
    //存放信息
    Response.Cookies["user_name_gly"].Value = TextBox1.Text;
    //读取信息
    String NameID = Response.Cookies["user_name_gly"].Value;
    HttpCookie cookie=new HttpCookie("theCookie","value");
    cookie.Expires=DateTime.Now.AddHours(2);保持两个小时HttpCookie cookie=new HttpCookie("TextBox1.Text","value");
    cookie.Expires=DateTime.MaxValue;//永远不过期//过期设置即安全退出
    HttpCookie cookie= Request.Cookies[ "user_name_gly "]; 
    cookie.Expires=DateTime.Today.AddDays(-1); 
    HttpContext.Current.Response.Cookies.Add(cookie); C# : 方法1: 
    Response.Cookies["username"].Value="gjy"; 
    Response.Cookies["username"].Expires=DateTime.Now.AddDays(1); 方法2: 
    System.Web.HttpCookie newcookie=new HttpCookie("username"); 
    newcookie.Value="gjy"; 
    newcookie.Expires=DateTime.Now.AddDays(1); 
    Response.AppendCookie(newcookie); 
    创建带有子键的cookies: 
    System.Web.HttpCookie newcookie=new HttpCookie("user"); 
    newcookie.Values["username"]="gjy"; 
    newcookie.Values["password"]="111"; 
    newcookie.Expires=DateTime.Now.AddDays(1); 
    Response.AppendCookie(newcookie); cookies的读取: 无子键读取: 
    if(Request.Cookies["username"]!=null) 

    Response.Write(Server.HtmlEncode(Request.Cookies["username"].Value)); 
    } 有子键读取: 
    if(Request.Cookies["user"]!=null) 

    Response.Write(Server.HtmlEncode(Request.Cookies["user"]["username"].Value));--------------------------------------------(3)ViewState
    通过给@page指令添加”EnableViewState=false”属性可以禁止整个页面的ViewState。
    小量、简单的数据   ---  一个WEB页面的生命期  ---  单个用户  --- 客户端//存放信息
    ViewState[“nameID”] = TextBox1.Text;
    //读取信息
    string NameID = ViewState[“nameID”].ToString();--------------------------------------------------------(4)Cache对象任意大小 ---- 可以根据需要设定 ------ 单个用户  ---- 服务端 Cache对象用于在HTTP请求期间保存页面或数据。该对象的使用可以极大地提高整个应用程序的效率。它允许将频繁访问的大量服务器资源存储在内存中,当用户发出相同的请求后服务器不用每次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求的时间。此对象的实例是每个应用程序专用的。其生存期依赖于该应用程序的生存期。当重新启动应用程序时,将重新创建其Cache对象的实例。使用Cache对象保存信息的代码如下:
    //存放信息
    Cache[“nameID”] = “0001”;
    Cache.Insert(“nameID”,”0001”);
    //读取信息
    string NameID = Cache[“nameID”].ToString();
    注:如果要利用缓存提供的清理、到期时间和依赖项等功能,必须使用Cache.Insert方法或Cache.Add方法添加信息。-----------------------------------------(5)查询字符查询字符串的方式是将要传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端重定向。这种方式可以实现在两个页面间传递信息。由于URL的长度有一定的限制,因此不能传递太大的信息,另外安全性也不好。
    传递信息的方法如下:
    Response.Redirect(“List.aspx?nameID=332&gradeID=32”);
    当跳转到List.aspx后,可以通过以下代码获得所传递的信息:
    string NameID,GradeID;
    NameID = Request.Params[“nameID”];
    GradeID = Request.Params[“gradeID”];