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

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

    另外说说  Linkbutton 和 Hyperlink的区别

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

    image 

    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

    image   这样,就会先执行 客户端的判断,然后才去执行删除.

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

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

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

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

    image

    技巧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  用于存放一般处理程序

    image    在文件夹上,新建项目  选择 一般处理程序image

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

    image

    image 我们重新生成解决方案,看看有无报错.

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

    验证码:<img src="handler/WaterMark.ashx" id="vimg" alt=""  onclick="changeCode()" style="cursor:pointer"/>
    image 
    image 
    如果我们直接在后台的CS文件里面输出错误的话,那么这个错误,会在html的第一行,并且会导致 网页的CSS变形,而且屏幕会看起来白屏
     
    image
    image 
     

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

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

    image 对应的Html是   <div id="emptydate" class="more_com"><p>该新闻暂无评论</p></div>

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

    image

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

    image

  • 相关阅读:
    模板层
    视图层
    路由层
    图书管理系统
    orm基础
    django目录结构介绍
    django基础
    20145211 《Java程序设计》第1周学习总结——小荷才露尖尖角
    实迷途其未远,觉今是而昨非——问卷调查
    20145203盖泽双问卷调查
  • 原文地址:https://www.cnblogs.com/iceicebaby/p/2306513.html
Copyright © 2011-2022 走看看