IsPostBack
当get请求是false post请求是true
当提交按钮的时候会把隐藏域中的name取出来,看是不是_viewstate_.有的话就是post,没有的话就是get(false)
去掉隐藏域:去掉ranat=server EnableViewState=false 就是禁用viewstate
当注册的时候当提交的时候一定要校验下用户名是否存在(js可以被禁用)
注册页面验证的时候表单不能加ruant=server,因为这样,表单提交的时候form表单的id已经改变了
解决办法:
前台:
<form id="form1" action="Regex.aspx" method="post">
后台:加个判断
if (Request.HttpMethod.Equals("post",StringComparison.CurrentCultureIgnoreCase))
用户名密码:记住我
怎么判断用户选择了记住我那个选择框:
if (!string.IsNullOrEmpty(Request.Form["CheckMe"]))
写入cookie
View Code
HttpCookie cookie1 = new HttpCookie("cp1", txtName); HttpCookie cookie2 = new HttpCookie("cp2", Entry(txtPass)); cookie1.Expires = DateTime.Now.AddDays(3); cookie2.Expires = DateTime.Now.AddDays(3); Response.Cookies.Add(cookie1); Response.Cookies.Add(cookie2);
校验cookie的时候如果用户名或者密码不一致要让cookie过期
Response.Cookies["cp1"].Expires = DateTime.Now.AddDays(-1); Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(-1);
在图书列表页面主要就是分页和按照价格或者日期排序问题:
分页可以写一个分页用户控件:
用Repeater绑定数据时
改变日期格式:
<%#Eval("PublishDate","{0:yyyy-MM-ss}")%>
排序问题:只有点击排序的时候排序,但点击下一页的时候没排序解决思路。
如果你点价格排序,点击下一页的时候是post请求,可以用viewstate保持状态。
点击123分页的时候,你点击2页的时侯,是get请求,这时候viewstate是空了,所以当第一次点击价格排序的时候需把viewstate里的值赋值给分页用户控件里的url,然后通过url传参,获取排序顺序。
在母版页加载目录树:从缓存中取
if (HttpRuntime.Cache["treeview"] == null) { BLL.Categories categories = new BLL.Categories(); List<Model.Categories> modelcateg = categories.GetModelList(""); HttpRuntime.Cache["treeview"] = modelcateg; } this.tvCategory.Nodes.Clear(); foreach (Model.Categories item in HttpRuntime.Cache["treeview"] as List<Model.Categories>) { TreeNode node = new TreeNode(); node.Text = item.Name; node.NavigateUrl = "/ListBook/ListBook_" + item.Id + ".aspx"; //"ListBook.aspx?categoryId=" + item.Id; this.tvCategory.Nodes.Add(node); }