zoukankan      html  css  js  c++  java
  • asp.net弹出对话框

    【原理】

    在页面上放置一隐藏控件,并在页面最后放上一段脚本代码,脚本代码检测隐藏控件的value是否为空,若不为空则弹出对话框显示信息,否则什么也不做。
    后台代码在需要的时候修改隐藏控件的value,这样当页面传到用户那时,最后的脚本代码将执行并弹出对话框。
     
    【注意事项】
    1.         隐藏控件必须是HTML控件,否则javascript无法找到。
    2.         后台代码要修改隐藏控件的值,隐藏控件自然得加上runat=”server” 标记。
    3.         在弹出对话框后,记得把隐藏控件的value置空,否则刷新的时候又会弹出来了。
    4.         脚本代码一定得放在隐藏控件的后面,否则同样找不到。
     
    【实现】
    页面代码(只列出body)
    <body MS_POSITIONING="GridLayout">
                  <form id="Form1" method="post" runat="server">
                         <asp:TextBox id="manuInput" runat="server"></asp:TextBox>
                         <asp:Button id="Button1" runat="server" Text="对话框"></asp:Button>
    <INPUT id="passTxt" type="hidden" runat="server"><!—隐藏控件à
                  </form>
                  <script language=javascript>...
                         if( document.all("passTxt").value!="" )
                         ...{
                                alert( document.all("passTxt").value );
                                document.all("passTxt").value=""; //这句可不能掉哟!
                         }
                  </script>
           </body>
    后台代码(只列出Button1的响应事件)
    private void Button1_Click(object sender, System.EventArgs e)
             {
                  passTxt.Value = manuInput.Text;
             }
    【效果】
     
    【补充说明】
    其实这个方法很简单,不过却很有效,你可以写一个函数showDialog(string str),然后在后台代码中任何需要的地方调用以弹出对话框。
    此外,你还可以把alert换成showModelDialog(),以弹出功能更丰富,界面更漂亮的窗口。
    最后,必须得说明的是,这个方法的思想可以用来在脚本和后台代码之间传递信息,我在我的web application中就是这样做的,效果很好。
    我们在ASP.NET程序的开发过程中,常常需要向用户给出提示信息,比如是否“操作成功”,“确定”还是“取消”操作。
      
        (1) 点击页面上的按钮,弹出一个对话框提示是“确定”还是“取消”操作,我们采用在按钮中添加属性来完成:
        例:
        public System.Web.UI.WebControls.Button btnDelRow;
        btnDelRow.Attributes.Add("onclick", "return confirm('确定要删吗?');");
     (2)点击页面上的链接,弹出一个对话框提示是“确定”还是“取消”操作,可在Page_Load()事件中,给希望给出确认提示的按钮增加属性:
        例:
        Link.Attributes.Add("onclick", "return confirm('你要执行这个操作吗?');");

        (3) 对于页面完成一个操作后,弹出一个对话框提示是否“操作成功”。
        例:
        Response.Write("<script>...alert('删除成功!')</script>");

        (4)允许 ASP.NET 服务器控件在 Page 中发出客户端脚本块:
        public virtual void RegisterStartupScript(string key,string script);  
        例:
        if(!this.IsStartupScriptRegistered("hello"))
        this.RegisterStartupScript("hello","<script>...alert('你好!')</script>"); 

    弹出“确定”对话框:
    Response.Write("<Script Language=JavaScript>...alert('消息!');</Script>");

    弹出“确定”对话框,点击后跳转页面:
    Response.Write("<Script Language=JavaScript>...alert('消息!');window.navigate('../index.aspx');</Script>");

    弹出“确定”和“取消”对话框,点击“确定”后执行相关操作:
    方法一:在Page_Load事件中,写入Button1.Attributes["onClick"]="javascript:return confirm('你确认要删除吗?');" ,然后在Button1_OnClick事件中写入您的执行代码。
    方法二:直接在Button1_OnClik事件中写入
    Response.Write("<Script Language=JavaScript>...if(confirm('你确认要删除吗?'))...{window.navigate('doDelete.aspx');} </Script>"); 方法二需要跳转到另一个页面执行操作,比方法一稍繁琐些,不过怎样用还看具体情况。


    收集到的。用具类


    using System;


    /// <summary>
    /// Alert 的摘要说明。
    /// </summary>
    public class Alert
    {
     public static void ShowAlert(string message)
     {
            if(message==null)
                message = "";
      //ljj
      //2005-12-9
      message=message.Replace("  ",""");
      System.Web.HttpContext.Current.Response.Write("<script>...alert('"+message+"');</script>");
     }
     public static void ShowAlert(string message,string url)
     {
            if(message==null)
                message = "";
            message = message.Replace("  ", """);
      System.Web.HttpContext.Current.Response.Write("<script>...alert(""+message+"");location='"+url+"';</script>");
     }
        public static void ShowConfirmAlert(string message, string confirmurl, string cancelurl)
        ...{
            if (message == null)
                message = "";
            message = message.Replace("  ", """);
            System.Web.HttpContext.Current.Response.Write("<script Language=Javascript>if( confirm('" + message + "') ) {document.location.href='" + confirmurl + "'; } else { document.location.href='" + cancelurl + "' }</script>");
        }
        public static void ShowConfirmAlert(string message, string confirmurl)
        ...{
            if (message == null)
                message = "";
            message = message.Replace("  ", """);
            System.Web.HttpContext.Current.Response.Write("<script Language=Javascript>if( confirm('" + message + "') ) {document.location.href='" + confirmurl + "'; } else { window.history.back(); }</script>");
        }
        public static void Redirect(string url)
     ...{//
      //
      if(url==null||url.Length<1)
       ShowAlert("重定向地址不能为空");
      else
         System.Web.HttpContext.Current.Response.Write("<script>location='"+url+"';</script>");
     }
     public static void SSOLoginRedirect(string url)
     ...{
       Redirect(url);
    //   if(url==null||url.Length<1)
    //    ShowAlert("重定向地址不能为空");
    //   else
    //    System.Web.HttpContext.Current.Response.Write("<script>if(window.parent!=window) window.parent.location=window.location; location='"+url+"';</script>");
     
     }
        public static void ShowAlert(string message,string url,bool IsRedirect)
        ...{
           
            if(message==null)
                message = "";
            if(IsRedirect)
                ShowAlert(message,url);
            else
                ShowAlert(message);
        }
    }


     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/linxi27/archive/2008/01/31/2075028.aspx

  • 相关阅读:
    Django-ORM和MySQL事务及三大范式介绍
    django-视图层与模板层
    django初步--+urls解析
    django前戏
    python web开发中跨域问题的解决思路
    MySQL显示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决方法
    xpath
    HTTP请求方法
    JavaScript 对象
    JavaScript 关键字
  • 原文地址:https://www.cnblogs.com/buy0769/p/1892253.html
Copyright © 2011-2022 走看看