当我们点击删除的时候,这个链接它到底是执行了什么呢? 通过 CommandArgument 来传递执行的 评论 ID 是什么.
另外说说 Linkbutton 和 Hyperlink的区别
前者显示的样子,也是一个超链接,但是他的作用是按钮的作用,可以想干一些你自己想要做的事情.第二个,只是超级链接的作用而已.
protected void lbtnDelComm_Click(object sender, EventArgs e) { //当前点击的按钮 LinkButton lb = (LinkButton)sender; //这个就是表示,是哪个链接被点击了. //获取传过来的commentid string commId = lb.CommandArgument; //删除评论 new CommentManager().Delete(commId); //再次绑定评论 疑问:为什么这里不再重新绑定新闻呢?因为我们这里是删除了评论,只用评论刷新,而不需要重新刷新新闻 //疑问:那假如,这个时候的新闻已经更改了呢?那我点删除评论,新闻会跟着刷新么? 不会!因为新闻是用 asp.net的状态保存住的 string newsid = Request.QueryString["newsid"]; repComment.DataSource = new CommentManager().SelectByNewsId(newsid); repComment.DataBind(); //我们绑定新闻看看有无刷新 NewsManager nm = new NewsManager(); News news = nm.SelectById(newsid); lblTitle.Text = news.Title; lblContent.Text = news.Content; lblCreateTime.Text = news.Createtime; }
如何在前台JS里面先设置一个 提示,是否真的删除评论呢?
还是要回到aspx的代码里面,在 LinkButton里面加入一个 OnClientClick
=================================================================================================
技巧1:如何对IP 隐藏最后一位呢? 例如 127.0.0.1变成 202.96.134.*
技巧2:如何当我们删除了评论了之后,滚动条不是跑到了页面的最顶端,而是保持在原来的位置呢?
我们在 newscontent.aspx 的第一行,加入一个代码 MaintainScrollPositionOnPostback="true"
技巧3:页面里面的锚记.例如 我们点击 我要评论 就跳到评论框. <a href="#com" class="a_comm">我要评论</a> 在评论框这里 我们加入一个锚记<a name="com"> </a>
通过 给 a 加入一个 name=”com” 然后再上面的链接的 href 的地址为 #com 就可以了
技巧4:js 全部选择. this.select() 对火狐也有效果.
我的评论:<asp:TextBox ID="txtComment" CssClass="txtComment" runat="server" TextMode="MultiLine" onclick="this.select()" Text="请在此输入评论内容"></asp:TextBox>
要记住,这里的 onclick 是我们手写的,.net控件对于前台的js代码,无提示功能.
生成验证码 用到 一般处理程序WaterMark.ashx
1:现在web 目录下,建立一个 handler 用于存放一般处理程序
然后我们把代码,复制进去.
我们看 如何调用这个 WaterMark.ashx 呢?在图片这里 把src 的地址改为 .由于我们点击验证码会产生一个新的验证码,所以这里还需要一个JS
验证码:<img src="handler/WaterMark.ashx" id="vimg" alt="" onclick="changeCode()" style="cursor:pointer"/>
如果我们直接在后台的CS文件里面输出错误的话,那么这个错误,会在html的第一行,并且会导致 网页的CSS变形,而且屏幕会看起来白屏
如何解决呢?我们用到 .NET在后置代码中输入JS提示语句(背景不会变白)类似于AJAX的效果,页面不刷新!!!
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('验证码输入错误!');</script>");
在后台,注册服务器端的脚本
if (code != rightCode) { //Response.Write("<script type='text/javascript'>alert('验证码输入错误')</script>"); //这个不行,会导致页面白屏,并且会跑到前台页面的第一行,影响CSS Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('验证码输入错误!');</script>"); return ; //这里要加 return 表示验证码不对的话,就直接return回去,下面的 添加数据库 就不执行了. }
这样,添加评论就完成了.我们考虑一种情况,当我们没有评论的时候,我们显示 “该新闻暂无评论” 这个如何实现?
对应的Html是 <div id="emptydate" class="more_com"><p>该新闻暂无评论</p></div>
我们加一个 runat=”server” 转换为 asp.net控件,我们就可以在后台 cs文件通过 ID 来进行控制了.
在后台的CS里面,我们判断,如果有新闻评论,显示评论,如果没有评论,则显示刚才的 “该新闻 暂无评论”