牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接

当我们点击删除的时候,这个链接它到底是执行了什么呢?  通过 CommandArgument 来传递执行的 评论 ID 是什么.

另外说说  Linkbutton 和 Hyperlink的区别

前者显示的样子,也是一个超链接,但是他的作用是按钮的作用,可以想干一些你自己想要做的事情.第二个,只是超级链接的作用而已.

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第1张图片 

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

image

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第2张图片   这样,就会先执行 客户端的判断,然后才去执行删除.

 

=================================================================================================

技巧1:如何对IP  隐藏最后一位呢?  例如  127.0.0.1变成  202.96.134.*

 

 

技巧2:如何当我们删除了评论了之后,滚动条不是跑到了页面的最顶端,而是保持在原来的位置呢?

 

我们在 newscontent.aspx 的第一行,加入一个代码   MaintainScrollPositionOnPostback="true"

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第3张图片

 

技巧3:页面里面的锚记.例如 我们点击 我要评论 就跳到评论框.   <a href="#com" class="a_comm">我要评论</a>   在评论框这里 我们加入一个锚记<a name="com">&nbsp;</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  用于存放一般处理程序

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第4张图片    在文件夹上,新建项目  选择 一般处理程序牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第5张图片

然后我们把代码,复制进去.

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第6张图片

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第7张图片 我们重新生成解决方案,看看有无报错.

 

我们看 如何调用这个  WaterMark.ashx 呢?在图片这里   把src 的地址改为  .由于我们点击验证码会产生一个新的验证码,所以这里还需要一个JS

验证码:<img src="handler/WaterMark.ashx" id="vimg" alt=""  onclick="changeCode()" style="cursor:pointer"/>
牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第8张图片 
牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第9张图片 
如果我们直接在后台的CS文件里面输出错误的话,那么这个错误,会在html的第一行,并且会导致 网页的CSS变形,而且屏幕会看起来白屏
 
牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第10张图片
牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第11张图片 
 

 

如何解决呢?我们用到 .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回去,下面的  添加数据库  就不执行了.
        }

 

这样,添加评论就完成了.我们考虑一种情况,当我们没有评论的时候,我们显示  “该新闻暂无评论”  这个如何实现?

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第12张图片 对应的Html是   <div id="emptydate" class="more_com"><p>该新闻暂无评论</p></div>

我们加一个 runat=”server”  转换为  asp.net控件,我们就可以在后台 cs文件通过 ID  来进行控制了.

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第13张图片

在后台的CS里面,我们判断,如果有新闻评论,显示评论,如果没有评论,则显示刚才的   “该新闻 暂无评论”

牛腩 40,41,42 整合新闻内容页 如何用LinkButton传数据,验证码的使用,保持滚动条不变,锚链接_第14张图片

你可能感兴趣的:(button)