zoukankan      html  css  js  c++  java
  • ASP.net实现的评分功能

    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" />&nbsp;非常满意</span></li>
    5 <li><span>
    6 <input id="input2" type="radio" value="2"/>&nbsp;一般</span></li>
    7 <li><span>
    8 <input id="input3" type="radio" value="3"/>&nbsp;不满意</span></li>
    9 </ul>

    嗯,同事看了下,使用Jqery构建了一个只发送不接收的代码--非常的简介,而且代码量很少:如下

                           <script type="text/javascript">
                            $(function(){
                                    $("#input1").click(function () {
                                    if(confirm("是否提交?")==true){
                                        $.post("Handler.ashx", { num: $("#input1").val(), kid:<%=kid%>}, function (num) {   
                                        if(num == 'Y')
                                            alert("你已经评论过了!");
                                        else
                                            return  $("#num").text(num);
                                        })
                                        }  else{
                                        return $(this).attr("#num").text(null);
                                        }                              
                                    })
                                    $("#input2").click(function () {
                                    if (confirm("是否提交?")==true){
                                        $.post("Handler.ashx", { num: $("#input2").val(), kid:<%=kid %>}, function (num) {
                                         if(num == 'Y')
                                            alert("你已经评论过了!");
                                         else
                                            return $("#num").text(num);                                                                                                                
                                        })
                                        }else{
                                            return $(this).attr("#num").text(null);
                                        }
                                    })
                                    $("#input3").click(function () {
                                    if(confirm("是否提交?")==true){
                                        $.post("Handler.ashx", { num: $("#input3").val(), kid:<%=kid%>}, function (num) {
                                         if(num == 'Y')
                                            alert('你已经评论过了!');
                                         else
                                             return  $("#num").text(num);                                        
                                        })
                                        }else{
                                            return $(this).attr("#num").text(null);
                                        }
                                    })
                                })
                            </script>

    够简单吧。可是我就是看不明白哈,哎,不会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.网站的总体性能提升?有木有什么比较好一点的方法提升网站的性能,是网站响应速度加快。目前考虑到的就是这么多问题。望众博友不吝赐教。。。拜谢。。。


  • 相关阅读:
    java 输出质数
    各大OJ
    使用css让图片居中
    poj 1250 Tanning Salon
    Struts2 中整合DWR3实现文件上传
    C语言I博客作业02
    The first essay.
    tar命令
    wBox Demo
    缓存记录
  • 原文地址:https://www.cnblogs.com/acoll/p/2429110.html
Copyright © 2011-2022 走看看