• (论坛答疑点滴)小处见大问题


    如果有以下几种很简单的需求,可是小需要中隐藏着大问题。
    给页面添加4个web按钮,点击4个按钮分别实现
    (1)打开一个摸态对话框
    (2)页面在客户端转向
    (3)页面转向并且进行一个服务器端操作比如Session["test"]=1;
    (4)页面转向并且输出一个客户端提示

    (1)return false的问题
    在PageLoad里面这么写
    Button1.Attributes.Add("onclick","window.showModalDialog('a.aspx');");
    如果这样的话关闭摸态对话框页面还是会Postback,如果在Button1的服务器端事件中写了
    Response.Write("aa");可以看到确实输出内容了
    为什么return false就可以了呢?在以前的asp中我们一般不会用一个type=submit的按钮来执行一个单纯的js操作
    一般我们这么写:<input type="button" onclick="">而asp.net的web按钮都是type=submit的

    (2)
    同样的,在PageLoad里面这么写
    Button2.Attributes.Add("onclick","location.href='a.aspx'");
    这样是不能转向的,一定要
    Button2.Attributes.Add("onclick","location.href='a.aspx';return false;");

    (3)
    如果你这么写
    Button3.Attributes.Add("onclick","location.href='a.aspx';return false;");
    页面不postback当然就不会执行服务器端click事件,所以就不能这么转向
    需要这么写:
    Session["test"]=1;
    Response.Redirect("a.aspx");

    (4)
    可能你会想到这么写:
    Response.Redirect("a.aspx");
    Response.Write("<script>alert('aa');</script>");
    这样又不对了,Response.Redirect()会导致Response.End()所以js的alert是不会出现的,
    改成这么写:
    Response.Write("<script>alert('aa');location.href='a.aspx'</script>");

    写此文的目的是说明:
    (1)要把握好什么时候用服务器端的转向和js的转向
    (2)要明确asp.net的机制,把握好使用return false;
    (3)不要脑子里只有服务器控件,html控件有的时候还是非常方便的,在有的时候我们仅仅需要点击按钮进行js操作(不需要服务器端的操作),这个时候与其用web按钮再为之添加js代码还不如直接用html按钮

    欢迎大家阅读我的极客时间专栏《Java业务开发常见错误100例》【全面避坑+最佳实践=健壮代码】
  • 相关阅读:
    Hibernate学习笔记
    Servlet:从入门到实战学习(3)---Servlet实例【图文】
    Servlet:从入门到实战学习(2)---Servlet生命周期
    Servlet:从入门到实战学习(1)---全·环境配置
    java复习(9)---数据库JDBC
    java复习(8)---I/O
    java复习(7)---集合类、泛型
    java复习(6)---异常处理
    C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏
    C# TTS 文本转语音中断实现方式
  • 原文地址:https://www.cnblogs.com/lovecherry/p/152494.html
Copyright © 2020-2023  润新知