如下在ajax.net环境下弹出一个对话框:/// <summary>
    /// showMsg 在ajax.net环境下弹出一个对话框
    /// 使用示例: new showMsg((Control)sender,"hello world!");
    /// <param name="ctrl">相关控件</param>
    /// <param name="msg">对话框上的文字</param>    
    /// </summary>
        public static void ajaxShowMsg(Control ctrl,string msg)
        {            
            
           System.Web.UI.ScriptManager.RegisterClientScriptBlock(
                ctrl,
                typeof(Control),
                DateTime.Now.ToString().Replace(":", ""),
                "alert('" + msg + "')",
                true);
            
        }我想改成使用时只要输入 ajaxShowMsg(string msg)却怎么也弄不起来

解决方案 »

  1.   

    public static void ajaxShowMsg(string msg) 
            {            
                
              System.Web.UI.ScriptManager.RegisterClientScriptBlock( 
                    GetType(), 
                    "",
                    DateTime.Now.ToString().Replace(":", ""), 
                    "alert('" + msg + "')", 
                    true); 
                
            } 
      

  2.   

          
          /// <summary> 
          /// showMsg 在ajax.net环境下弹出一个对话框 
           /// 使用示例: new showMsg((Control)sender,"hello world!"); 
          /// <param name="ctrl">相关控件 </param> 
          /// <param name="msg">对话框上的文字 </param>    
          /// </summary> 
          public static void ajaxShowMsg(Control ctrl,string msg) 
          {            
           System.Web.UI.ScriptManager.RegisterClientScriptBlock( 
           GetType(), "js",  
           DateTime.Now.ToString().Replace(":", ""), 
           "alert('" + msg + "')",true); 
          } 这样不行吗?
      

  3.   


          /// <summary> 
          /// showMsg 在ajax.net环境下弹出一个对话框 
           /// 使用示例: new showMsg((Control)sender,"hello world!"); 
          /// <param name="ctrl">相关控件 </param> 
          /// <param name="msg">对话框上的文字 </param>    
          /// </summary> 
          public static void ajaxShowMsg(string msg) 
          {            
           System.Web.UI.ScriptManager.RegisterClientScriptBlock( 
           GetType(), "js",  
           DateTime.Now.ToString().Replace(":", ""), 
           "alert('" + msg + "')",true); 
          } 这样不行吗?
      

  4.   

    编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0120: 非静态的字段、方法或属性“object.GetType()”要求对象引用源错误: 行 142:
    行 143:        System.Web.UI.ScriptManager.RegisterClientScriptBlock(
    行 144:              GetType(),
    行 145:              "",
    行 146:              DateTime.Now.ToString().Replace(":", ""),
     
      

  5.   


    编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0120: 非静态的字段、方法或属性“object.GetType()”要求对象引用源错误: 行 143:          
    行 144:       System.Web.UI.ScriptManager.RegisterClientScriptBlock( 
    行 145:       GetType(), "js",  
    行 146:       DateTime.Now.ToString().Replace(":", ""), 
    行 147:       "alert('" + msg + "')",true); 
     
      

  6.   

    public static void ajaxShowMsg(string msg) 
            {            
                
              System.Web.UI.ScriptManager.RegisterClientScriptBlock(this.Page, 
                    Page.GetType(), 
                    "",
                    DateTime.Now.ToString().Replace(":", ""), 
                    "alert('" + msg + "')", 
                    true); 
                
            } 
      

  7.   

    编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0026: 关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效源错误: 行 142:
    行 143:        System.Web.UI.ScriptManager.RegisterClientScriptBlock(
    行 144:            this.Page,
    行 145:              Page.GetType(),            
    行 146:              DateTime.Now.ToString().Replace(":", ""),
     
      

  8.   

    想法不错。。System.Web.UI.ScriptManager.RegisterClientScriptBlock()必须传两参的
    想做成一个通用的 好像不行 
    既然想用javascript 就手写嘛 写个通用的 不也一样
      

  9.   


    手写的没办法在ajax环境下弹出对话框啊
      

  10.   

    如果是net3以上的话 可以采用扩展方法去实现static public class extendLib
    {
        static public void ajaxShowMsg(this System.Web.UI.Control ctrl, string msg) //对System.Web.UI.Control使用扩展方法给其新增一个ajaxShowMsg的方法
        {
            System.Web.UI.ScriptManager.RegisterClientScriptBlock(ctrl,ctrl.GetType(),DateTime.Now.ToString().Replace(":", ""), "alert('" + msg + "')",true); 
     
        }} 使用方法:
     this.Label1.ajaxShowMsg("fasdfsadf");
      

  11.   

    试试这样:
    public static void ajaxShowMsg(string msg) 
            {            
                
              System.Web.UI.ScriptManager.RegisterClientScriptBlock( 
                    GetType(), 
                    "",
                    DateTime.Now.ToString().Replace(":", ""), 
                    "alert('" + msg + "')", 
                    true); 
                
            } 
      

  12.   

    想在ajax环境下弹出对话框,用AjaxControlTookit工具集啊,再说了,你传的是两个参数怎么调用的时候只传一个啊?
    scriptManager.RegisterClientScriptBlock(Control c,Tpye t,string key,string script,bool);
      

  13.   


    /// <summary>
        /// 弹出JavaScript小窗口
        /// </summary>
        /// <param name="js">窗口信息</param>
        public static void Alert(string message, Page page)
        {
            #region
            string js = @"<Script language='JavaScript'> alert('" + message + "');</Script>";
            if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "alert"))
            {
                page.ClientScript.RegisterStartupScript(page.GetType(), "alert", js);
            }
            #endregion
        }
      

  14.   

    public static void ajaxShowMsg(string msg) 
          {            
           System.Web.UI.ScriptManager.RegisterClientScriptBlock( 
           GetType(), "js",  
           DateTime.Now.ToString().Replace(":", ""), 
           "alert('" + msg + "')",true); 
          } 
      

  15.   

            public static void ajaxShowMsg(string msg) 
            {            
                
              System.Web.UI.ScriptManager.RegisterClientScriptBlock( 
                    new Control(), 
                    typeof(Control), 
                    DateTime.Now.ToString().Replace(":", ""), 
                    "alert('" + msg + "')", 
                    true); 
                
            } 
      

  16.   

    The control must be in the control tree of a page.
    参数名: control 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: The control must be in the control tree of a page.
    参数名: control源错误: 
    行 141:    {
    行 142:
    行 143:        System.Web.UI.ScriptManager.RegisterClientScriptBlock(
    行 144:                new Control(),
    行 145:                typeof(Control),
     源文件: d:\hy\App_Code\MyHelper.cs    行: 143 
      

  17.   

    楼主可以这样做,如果你每个页面都继承自己的基类,那么在基类中增加ajaxShowMsg方法就可以了。
    如果页面都继承 System.Web.UI.Page,那么增加这个类就可以
     public static class test
        {
            public static void ajaxShowMsg(this System.Web.UI.Page page, string info)
            {
                ScriptManager.RegisterClientScriptBlock(page,page.GetType(), DateTime.Now.ToString().Replace(":", ""), "alert('" + info + "')", true);
            }
        }调用的地方直接写Page.ajaxShowMsg("测试");就ok了
      

  18.   


    感谢Mbh0210提供的方法,我在app_code\myHelper.cs文件里加入了你提供的方法public static void ajaxShowMsg(System.Web.UI.Page page, string info)
    {
    ScriptManager.RegisterClientScriptBlock(page,page.GetType(), DateTime.Now.ToString().Replace(":", ""), "alert('" + info + "')", true);
    }现在调用这个方法的写法变成了 MyHelper.ajaxShowMsg2(this, "123");
    比我之前的MyHelper.ajaxShowMsg((Control)sender,"123");简化了许多,如果能达到下面这个就更好了
    MyHelper.ajaxShowMsg("123");
      

  19.   

    在 ajaxShowMsg的重载函数里ajaxShowMsg(参数1,参数2)
    如果没有ajaxShowMsg(参数1)就不能调用
    一定要实现,就要重写调用ajaxShowMsg的函数
      

  20.   

    public static class test 

    public static void ajaxShowMsg(this 这个好像多余了System.Web.UI.Page page, string info) 

    ScriptManager.RegisterClientScriptBlock(page,page.GetType(), DateTime.Now.ToString().Replace(":", ""), "alert('" + info + "')", true); 


    是对page类的扩张,ajaxShowMsg方法直接增加到page中,是类page的扩张方法
    那么页面都是继承page类,你调用的时候直接可以Page.ajaxShowMsg("测试");就可以了,传入一个参数就ok了。
    楼主看一下C#的扩展方法就知道我写的这个类是干嘛用的了。呵呵
      

  21.   

    完美解决方案来了(framework 3.5,vs2008下测试通过):public class ScriptHelp
    {
       public static void Alert(string msg)
            {
                string script = "<script>alert('{0}');</script>";
                System.Web.UI.Page page = (System.Web.UI.Page)HttpContext.Current.Handler;
                page.ClientScript.RegisterClientScriptBlock(page.GetType(),"",string.Format(script,msg.Replace("'","")));
            }
    }
    调用:    ScriptHelp.Alert("hello");不需依赖当前的page或者控件,自动获取,随时随地调用。
      

  22.   


    太好了,经测试上面的代码有效,调用非常方便,非常感谢lindping(framework 2.0,vs2005下测试通过)结贴送分喽