页面已经做完了
现在要加入一个新功能用户访问计数器
只要用户打开页面就计数
刷新也是
而且后台能修改计数器数字我找了一天的代码,都不行
只有统计的(统计的我做的差不多了),没有能修改的
都是用application
而application我不是很懂
不知道怎么改谁帮我解决一下啊
解决后我会加分的

解决方案 »

  1.   

    添加一个Global.asax全局程序集文件,在该文件中的Application_Start事件中定义一个Application变量,并将其值初始化为0void Application_Start(object sender, EventArgs)
    {
    Application["count"] = 读取到数据库中的值;
    }void Session_Start(object sender, EventArgs e)
    {
    Application.Lock();//防止多用户同时访问而造成的并行操作
    Application["count"]=Convert.ToInt32(Application["count"])+1;
    Application.UnLock();
    }void Session_End(object sender, EventArgs e)
    {
    //把Application["count"]存入数据库
    }
      

  2.   

    呵,打错,应把Application变量,并将其值初始化为从数据库中取到的值
      

  3.   

    刷新也计数的话,可以考虑 处理HttpApplication.EndRequest 事件
      

  4.   


    这个我会
    但是
    如果我要一个能修改计数器的功能也就是改变了数据库中计数器的值后
    页面的APPLICATION也随之改变但现在的问题是我改变了数据库中的值后
    Application变量还是以前的变量,值还是以前的值
    你上面初始化的时候是数据库的值没错
    但总不能叫我每改变一次数据库的值就重起下服务器吧
      

  5.   

    这里是一个demo。你可以创建一个.cs文件(例如叫做BLL.cs)using System.IO;
    using System.Linq;
    using System.Web;
    using System.Web.Caching;
    using System.Web.UI;public class BLL
    {
        static public int 网页计数
        {
            get
            {
                string key = GetKey();
                object x = HttpContext.Current.Cache[key];
                if (x == null)
                {
                    string path = GetFileFullName(key);
                    if (!File.Exists(path))
                        x = 0;
                    else
                        x = int.Parse(File.ReadAllText(path));
                    HttpContext.Current.Cache.Insert(key, x, new CacheDependency(path));
                }
                return (int)x;
            }
            set
            {
                string key = GetKey();
                File.WriteAllText(GetFileFullName(key), value.ToString());
                HttpContext.Current.Cache.Remove(key);
            }
        }    static private string GetKey()
        {
            Page p = HttpContext.Current.Handler as Page;
            return "页面{" + p.Title + "}的计数器";
        }    static private string GetFileFullName(string key)
        {
            return HttpContext.Current.Server.MapPath("~/App_Data/" + key + ".txt");     //注意:这里并没有检查路径中的字符合法性。
        }
    }
    你可以在页面设计中写:<asp:Label ID="Label1" runat="server" Font-Size="XX-Large" ForeColor="Red" Text="<%# BLL.网页计数 %>"></asp:Label>然后就在page_load中刷新绑定它:
        protected void Page_Load(object sender, EventArgs e)
        {
            BLL.网页计数++;   //这里每当页面显示即更新计数器,你也可以仅在某些功能方法内才改变计数器。
            this.Label1.DataBind();
        }在你的App_Data目录下会生成相应的文件记录点击数。
      

  6.   

    HttpContext.Current.Cache.Insert(key, x, new CacheDependency(path));
    这句话是说,每当文件被修改,这个Cache单元就自动刷新了。
      

  7.   

    可以用数据库集合Application来做,我以前做过的,每次从数据库中读取写写入
      

  8.   

    做网站的时候刚写了个,是用javascript文件调aspx页面实现的,很简单:浏 览 量:<script language="JavaScript" type="text/javascript" src="../CallBack/VisitCount_BuyCarDetail.aspx?VehicleBh=P10390"></script>次
    VisitCount_BuyCarDetail.aspx.csVehicleBh=Request["VehicleBh"];
    ../更新数据库计数器代码
    Response.Write(当前值);
    http://www.ygool.com/BuyCar/BuyCarInfoDetail.aspx?VehicleBh=P10390
    自已看吗,是lz想要实现功能吗?