文档章节

C#实现文章评论功能

蔬菜kiki
 蔬菜kiki
发布于 2017/08/29 14:41
字数 475
阅读 8
收藏 0

思路步骤如下:

1、获取文章id,如:string id = Request.QueryString["id"].ToString();

2、识别用户名session是否有效,如失效或者未登录状态,先登录,之后读取用户信息;

3、插入评论(字段为:评论id,评论内容,评论时间,用户名,文章id);

4、读取评论。

代码如下:

public partial class ArtShow : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            string id = Request.QueryString["id"].ToString();
            int intID = 0;
            try
            {
                intID = int.Parse(id);
            }
            catch
            {
                CommonClass cc = new CommonClass();
                Response.Write(cc.MessageBoxPage("编号错误!"));
                Response.Write("<script language='javascript'>window.close();</script>");
                return;
            }
            ReadData(intID);
            ReadComment(intID);

        }
    }

    //留言提交
    protected void btnTJ_Click(object sender, EventArgs e)
    {
        noLogin.Text = "";//初始化标签
        if (Session["UserId"] == null || Session["UserId"].ToString().Equals(""))
        {
            noLogin.Text = "<font>您尚未登录或登录超时,请重新登录。</font>";
        }
        else
        {
            string Comment_con = srContent.Text.Trim();
            if (Comment_con.Equals(""))
            {
                //留言信息为空,在此处操作前台提示
                noLogin.Text = "<br><font>留言信息不能为空!</font>";
                return;
            }
            //查询用户信息
            long userid = Convert.ToInt64(Session["UserId"].ToString());
            string username = "";
            string name = "";
            string branchNum = "";
            string strGetUserInfo = "select top 1 USER_NAME,NAME from USER_INFO where USER_ID=@USER_ID";
            DataBase dataGetUserInfo = new DataBase();
            SqlParameter[] Dpa ={
                                    dataGetUserInfo.MakeInParam("@USER_ID",SqlDbType.BigInt,8,userid)	
                                   };
            SqlDataReader Dread = dataGetUserInfo.ExceReadCmd(strGetUserInfo, Dpa);
            if (Dread.HasRows)
            {
                while (Dread.Read())
                {
                    username = Dread["USER_NAME"].ToString();
                    name = Dread["NAME"].ToString();
                }
            }
            Dread.Close();
            Dread.Dispose();
            dataGetUserInfo.Close();

            //插入留言数据
            
            string strSql = "insert into Comment_INFO(Comment_content,Comment_Time,USER_ID,USER_NAME,NAME,ART_ID)" + " values (@Comment_content,@Comment_Time,@USER_ID,@USER_NAME,@NAME,@ART_ID)";
            DataBase data = new DataBase();
            SqlParameter[] pa ={
                                    data.MakeInParam("@Comment_content",SqlDbType.VarChar,2000,Comment_con),
                                    data.MakeInParam("@Comment_Time",SqlDbType.DateTime,10,DateTime.Now.ToString()),//获取当前系统时间
                                    data.MakeInParam("@USER_ID",SqlDbType.BigInt,8,userid),
                                    data.MakeInParam("@USER_NAME",SqlDbType.NVarChar,50,username),
                                    data.MakeInParam("@NAME",SqlDbType.Char,12,name)
                                   
                                    data.MakeInParam("@ART_ID",SqlDbType.BigInt,8,Convert.ToInt64(LabART_ID.Text))//获取暂存的文章id
							  };
            int intResult = 0;
            intResult = data.RunProc(strSql, pa);
            data.Close();
            data.Dispose();
            if (intResult == 0)
            {
                CommonClass cc = new CommonClass();
                Response.Write(cc.MessageBoxPage("留言成功!"));
                srContent.Text = "";
                return;
            }
            else
            {
                CommonClass cc = new CommonClass();
                Response.Write(cc.MessageBoxPage("提交至数据库时发生错误!"));
                return;
            }
        }
    }

    private void ReadComment(int id)
    {
        //查询改文章的留言信息
        string commentlist = "";
        string strGetUserInfo = "select Comment_content,Comment_Time,USER_ID,USER_NAME,NAME,ART_ID from Comment_INFO where ART_ID=@ART_ID order by Comment_Time desc";
        DataBase dataGetUserInfo = new DataBase();
        SqlParameter[] Dpa ={
                               dataGetUserInfo.MakeInParam("@ART_ID",SqlDbType.BigInt,8,id)	
                                   };
        SqlDataReader Dread = dataGetUserInfo.ExceReadCmd(strGetUserInfo, Dpa);
        if (Dread.HasRows)
        {
            while (Dread.Read())
            {
                
             commentlist = commentlist + "<tr><td>Dread["NAME"] + "</td><td>" + Dread["Comment_content"] + "</td><td>" + Dread["Comment_Time"] + "</td></tr>";

            }
        }
        Dread.Close();
        Dread.Dispose();
        dataGetUserInfo.Close();
        CommentList.Text = commentlist;
    }
   
}

 

© 著作权归作者所有

共有 人打赏支持
蔬菜kiki
粉丝 1
博文 11
码字总数 4093
作品 0
杭州
程序员
C#多线程lock解决数据同步

1.代码实例: { } 使用lock锁前后结果对比: 使用Lock锁前,多线程修改同一数据会出现相同结果, 使用Lock锁后,修改数据保证了数据的在多个线程操作时的同步。 2.使用Lock锁前后的性能对比:...

小麋鹿666
2017/02/04
0
0
C#创建对象列表(List

本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 玩转C#可有趣了。在这篇文章中,我们将介绍如何用不同的方法创建对象列表。因此,场景是这样的,有...

码农网
2017/12/18
0
0
Javascript Tip(1) 操作剪贴板

javascript可以轻松操作客户端剪贴板内容,不过只适用IE5以上浏览器 javascript可以使用window.clipboardData对象处理剪贴板内容 保存到剪贴板的方法 setData(param1, param2) param1 :数据类...

晨曦之光
2012/03/09
157
0
微软开源深度学习工具包CNTK更新2.3版,带来多重性能改进

雷锋网 AI 科技评论消息,近日微软更新了自家开源深度学习工具包CNTK,新的版本号为2.3,带来了多项性能改进。 CNTK全名为Computational Network Toolkit,与谷歌的TensorFlow、Facebook的C...

杨晓凡
2017/12/01
0
0
多线程下C#如何保证线程安全?

多线程编程相对于单线程会出现一个特有的问题,就是线程安全的问题。所谓的线程安全,就是如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结...

小麋鹿666
2017/01/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
1
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
2
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
1
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
1
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部