【问题标题】:store the number of button clicks asp.net (c#)存储按钮点击次数 asp.net (c#)
【发布时间】:2015-06-05 03:47:58
【问题描述】:

我已为用户提供了下载由提供商上传的图像的选项。单击下载按钮时,图像会下载。 但我还想存储点击下载按钮的次数。 为此,我输入了此代码,但它不起作用。

我尝试了几种方法,比如声明一个 int 变量并递增它。没用。然后我尝试了这个。还是行不通。我做错了什么?

 protected void btn_download_Click(object sender, EventArgs e)
        {


            var res = (byte[])Session["Image"];

           Response.Clear();
            MemoryStream ms = new MemoryStream(res);
            Response.ContentType = "image/jpeg";
            Response.AddHeader("content-disposition", "attachment;filename=Image.jpg");
            Response.Buffer = true;
            ms.WriteTo(Response.OutputStream);
            Response.End();



            try
            {

                SqlCommand command = new SqlCommand("UPDATE [ImageWithTags] SET DownloadCount = DownloadCount + 1 WHERE ImageID='" + DropDownList1.SelectedItem.Text + "'", con);
                con.Open(); 
                command.ExecuteNonQuery();
                con.Close();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }




        }

【问题讨论】:

  • 您遇到了什么错误(如果有)?调试时会发生什么?
  • 没有错误出现。它只是不将下载计数存储在数据库中
  • 如果您将断点放在con.Open(),然后查看您的command 变量,您的查询是否符合您的预期?
  • 您可以使用ViewstateSession variable
  • 在 response.end 之前执行 SQL 命令怎么样?

标签: c# asp.net sql-server click increment


【解决方案1】:

您也可以为此创建一个会话变量并进行如下计算:

protected void btn_download_Click(object sender, EventArgs e)
{
    int counter=0;    
    if(Session["counter"]!=null)
     {
        Session["counter"] = ++Convert.ToInt32(Session["counter"]);
        counter = Convert.ToInt32Session["counter"];
     }
    else
      Session["counter"] = 0;
        // do your calculation here with variable counter
}

【讨论】:

  • 他不想存储在会话中按下按钮的次数,而是存储在所有用户的站点上。
猜你喜欢
  • 1970-01-01
  • 2013-06-29
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 2015-10-28
  • 2020-10-22
  • 2012-04-05
相关资源
最近更新 更多