PS:由于上几次测试的时候出现了很多的Bug,然后逐步修正了BUg的问题,先可以实现的功能如下:点击评分的时候,异步刷新---对用户来说是一个很好的体验。第二防止网页刷新的时候用户重复提交(这里助于奥使用的收cookie,可是一旦cookie被清空,再刷新的话又可以提交了。。。)
需求描述:UI提供指定的信息供用户选择,用户选中评论,异步更新数据库中的分数。如下图所示:
问题是我们如何实现这样的功能呢?纠结了好就久。然后想出三种可行的方式:js脚本提交,Ajax异步提交,Jquery提交。嗯,程序部比较强悍的同事说使用JQ来实现。下面开始讲解:UI的Html代码:
1 <div id="scorebar">
2 <ul>
3 <li><span>
4 <input id="input1" type="radio" value="1" /> 非常满意span>li>
5 <li><span>
6 <input id="input2" type="radio" value="2"/> 一般span>li>
7 <li><span>
8 <input id="input3" type="radio" value="3"/> 不满意span>li>
9 ul>
嗯,同事看了下,使用Jqery构建了一个只发送不接收的代码--非常的简介,而且代码量很少:如下
够简单吧。可是我就是看不明白哈,哎,不会Jq的程序员真够悲剧的。。。之后再net项目中添加了一个Handler.ashx问价,原来处理Jq提交过来的参数。下面看下该文件代码
1 public void ProcessRequest(HttpContext context) 2 { 3 context.Response.ContentType = "text/plain"; 4 5 //提交更新数据库的请求和返回执行更新后的数据。 6 int radiovalue = int.Parse(context.Request["num"]); 7 int kid = int.Parse(context.Request["kid"]); 8 if (radiovalue == 1) 9 { 10 if (context.Request.Cookies["cookie"] == null)//判断cookie是否存在 11 { 12 KindergartenInfoManagerLFK.UpdateKinByID(kid, 5); 13 HttpCookie coo = new HttpCookie("cookie");//创建cookie 14 coo.Expires = DateTime.Now.AddHours(24); 15 coo.Values["kid"] = kid.ToString();//存储kid的值到cookie中 16 context.Response.AppendCookie(coo); 17 context.Response.Write(KindergartenInfoManagerLFK.SelectUpdate(kid).ToString("0.0")); 18 } 19 else 20 { 21 if (context.Request.Cookies["cookie"].Values["kid"] != kid.ToString()) 22 { 23 KindergartenInfoManagerLFK.UpdateKinByID(kid, 5); 24 context.Request.Cookies["cookie"].Expires = DateTime.Now.AddHours(24); 25 context.Request.Cookies["cookie"].Values["kid"] = kid.ToString();//存储kid的值到cookie中 26 context.Response.AppendCookie(context.Request.Cookies["cookie"]); 27 context.Response.Write(KindergartenInfoManagerLFK.SelectUpdate(kid).ToString("0.0")); 28 } 29 else 30 { 31 context.Response.Write("Y"); 32 } 33 } 34 } 35 if (radiovalue == 2) 36 { 37 if (context.Request.Cookies["cookie"] == null)//判断cookie是否存在 38 { 39 KindergartenInfoManagerLFK.UpdateKinByID(kid, 2); 40 HttpCookie coo = new HttpCookie("cookie");//创建cookie 41 coo.Expires = DateTime.Now.AddHours(24); 42 coo.Values["kid"] = kid.ToString();//存储kid的值到cookie中 43 context.Response.AppendCookie(coo); 44 context.Response.Write(KindergartenInfoManagerLFK.SelectUpdate(kid).ToString("0.0")); 45 } 46 else 47 { 48 if (context.Request.Cookies["cookie"].Values["kid"] != kid.ToString()) 49 { 50 KindergartenInfoManagerLFK.UpdateKinByID(kid, 2); 51 context.Request.Cookies["cookie"].Expires = DateTime.Now.AddHours(24); 52 context.Request.Cookies["cookie"].Values["kid"] = kid.ToString();//存储kid的值到cookie中 53 context.Response.AppendCookie(context.Request.Cookies["cookie"]); 54 context.Response.Write(KindergartenInfoManagerLFK.SelectUpdate(kid).ToString("0.0")); 55 } 56 else 57 { 58 context.Response.Write("Y"); 59 } 60 } 61 } 62 if (radiovalue == 3) 63 { 64 if (context.Request.Cookies["cookie"] == null)//判断cookie是否存在 65 { 66 KindergartenInfoManagerLFK.UpdateKinByID(kid, 0); 67 HttpCookie coo = new HttpCookie("cookie");//创建cookie 68 coo.Expires = DateTime.Now.AddHours(24); 69 coo.Values["kid"] = kid.ToString();//存储kid的值到cookie中 70 context.Response.AppendCookie(coo); 71 context.Response.Write(KindergartenInfoManagerLFK.SelectUpdate(kid).ToString("0.0")); 72 } 73 else 74 { 75 if (context.Request.Cookies["cookie"].Values["kid"] != kid.ToString()) 76 { 77 KindergartenInfoManagerLFK.UpdateKinByID(kid, 0); 78 context.Request.Cookies["cookie"].Expires = DateTime.Now.AddHours(24); 79 context.Request.Cookies["cookie"].Values["kid"] = kid.ToString();//存储kid的值到cookie中 80 context.Response.AppendCookie(context.Request.Cookies["cookie"]); 81 context.Response.Write(KindergartenInfoManagerLFK.SelectUpdate(kid).ToString("0.0")); 82 } 83 else 84 { 85 context.Response.Write("Y"); 86 } 87 } 88 } 89 }
项目使用的是三层架构,相应的只用在DAL层和BLL层处理一下就OK了,这个就不说了。三层架构是基础。很多启示都很简单。
启示这就写代码一直在想的问题是:
1.如何减少页面的控件使用,增加UI的加载速度;
2.后台代码如何优化,比如说如果要读取一张数据表的数据,不用多次去读取,只需要读取一次,然后在从里面取相应的值即可,这样我们可使用Lambda+泛型,缓存的使用。暂时想到这么点,不知道还有木有更犀利更强悍的方法?
3.数据库的优化。这个主要是字段。其他暂时没有涉及。
4.网站的安全性,从哪些方面来保证网站的安全性呢?这个很迷惑。
5.网站的总体性能提升?有木有什么比较好一点的方法提升网站的性能,是网站响应速度加快。目前考虑到的就是这么多问题。望众博友不吝赐教。。。拜谢。。。