我建了一个ASP.net项目,之后又建了一个BASE文件是用于统一界面 ,它继承于 System.Web.UI.Page 然后让所有的类都继承BASE类 而不是继承 System.Web.UI.Page ,但这些文件却不能显示设计窗口, 不知是怎么回事 

解决方案 »

  1.   

    把需要改变的东东设为public才可以改变
    为什么不用母板呢!
      

  2.   

    你的Base类是怎么定义的?using namespaces....public class PageBase : Page
    {}页里:
    public class Page1 : PageBase
    {
    }
      

  3.   

    如果你说的BASE页面是aspx,那么你可能对页面的机制理解错了。当你创建“BASE页面”时,你可能看到了一个CodeBehind方式的代码文件,它声明了一个叫做BASE的类,上边你可以写这个页面的代码。但是要记住,这个类型不是页面的子类,而是父类。对于asp.net2.0以前的版本来说,页面真是的类型是继承自BASE类的,对于asp.net2.0来说,页面的定义部分与BASE类合并(根据Partial关键字)成为完整的BASE类,然后页面也还是从BASE继承。而页面自己生成一个子类,例如名字叫做“BASE_aspx”的类型,它通常是在运行时临时编译在系统临时目录中的,或者如果采用asp.net 2.0的预编译方式则是与BASE编译在同一个dll中但是是另外一个名字。如果你在页面 @Page 那一行给出ClassName属性好象可以指定此名称(我不确定)。但是即使你的其它页面的代码写成从这个自己指定的ClassName的名字的类型继承,便以可能一会能过去、一会过不去,结果不确定,当目录中有上一次编译的“垃圾”文件时就能编译过去,当正确地编译时就过不去,所以这种方式也使错误的。基本上,可以认为asp.net页面不支持继承。至少当你创建两个aspx的时候,编译器自动产生的代码就会让一个aspx产生的代码“消除”另外一个做为父类的aspx的代码的流程,而不是继承。因此asp.net并不给你产生正确的代码。如果要写一个正确的父页面,那么你要写一个类BASE,而不是aspx页面。在这个类BASE中,你当然要把创建所有控件、处理事件等东西按照自定义控件的写法,用代码来控制一切。此时不能用RAD设计器去设计界面。
      

  4.   

    如果此BASE没有编译通过,或者运行时表现有错误,那么它的子类肯定也跟着受影响。