public void MessageBox(string message, string url)
    {
        string str;
        str = "<script language=javascript>alert('" + message + "');location='" + url + "';</script>";
        Page.ClientScript.RegisterStartupScript(Page.GetType(), "", str);
    }
为什么封装在类里面就会报错:
CS0120: 非静态字段、方法或属性“System.Web.UI.Page.ClientScript.get”要求对象引用如果直接写在.aspx.cs中就没问题呢

解决方案 »

  1.   

    因为没有继承pagepublic class className : System.Web.UI.Page
      

  2.   

    我继承了,虽然不报错了,但是也不弹出对话框
    public class other : System.Web.UI.Page 
    {
        public other()
        {
            DataBase data = new DataBase();
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
        public void MessageBox(string message, string url)
        {
            string str;
            str = "<script language=javascript>alert('" + message + "');location='" + url + "';</script>";
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "", str);
        }
    }
    调用:
            other o = new other();
           o.MessageBox("s");
      

  3.   

    然后页面继承other a.aspx.cspublic class other : other {
      page_load...
       MessageBox("s");//直接使用
    }
      

  4.   

    可以了,我还想请问你一下,在配置文件里可以设置让所有页面都继承other类吗
      

  5.   

    你写错了,应该是
    Page.ClientScript.RegisterStartupScript(this.GetType(), "", str);
      

  6.   

    一看你就和我的水平差不多。高看了,其实我的水平不如你不过,我不会像你这样写代码。
    做客户端的url转向,非先让服务器端去执行一段代码,输出脚本,再让客户端的脚本去执行要么就直接Response.Redirect,如果用服务器代码。
    要么就用一个html元素input type='button',直接客户端提示后,客户端跳转。。
      

  7.   

    一看你就和我的水平差不多。高看了,其实我的水平不如你不过,我不会像你这样写代码。
    做客户端的url转向,非先让服务器端去执行一段代码,输出脚本,再让客户端的脚本去执行要么就直接Response.Redirect,如果用服务器代码。
    要么就用一个html元素input type='button',直接客户端提示后,客户端跳转。。
    我主要是在页面提交以后,弹出提示成功对话框,在直接用Response.Redirect的话,js脚本是写在html开头的,这样页面css就不会加载到,页面混乱,在点击确认后才会加载css。
    用Page.ClientScript.RegisterStartupScript的话是js脚本写在html末端,这样的话就先加载css,再执行js的。
      

  8.   

    现在提交表单数据还有人在用postback方法吗?要么使用asp.net ajax框架
    更多的是使用jquery.还有,像这样的Page.ClientScript.RegisterStartupScript、Page.RegisterHiddenField
    在我看来就是狗屎。。使用这些页面是必须要得有form runat="server"
    如果没有的话,不报错,也不会有正确的结果。