我有一个页面,里面有个表单,我想点提交把数据存到数据库后页面不变可以第多次次提交,但是需要把每一次提交的值存到页面上
多次提交的值最后再处理页面存的数据。
我想知道这些数据存到哪?内容有点多,不想存在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() ;
这样不行。
多次提交的值最后再处理页面存的数据。
我想知道这些数据存到哪?内容有点多,不想存在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
信息量大小 --- 保存时间 ------- 应用范围 -----保存位置小量、简单的数据 --- 用户活动时间+一段延迟时间(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”];