关于页面继承的问题
我现在有个页面BasePage(基类),是从Page类继承的,BasePage(基类)里包含一些控件,比如TextBox,Button.
然后再定义一个页面SubPage(子类),从BasePage(基类)继承,另外加了些控件,比如TextBox,Button。
可我运行SubPage(子类)的时候,只显示在SubPage(子类)里的控件,没有显示BasePage(基类)中的控件,请问怎样才能既显示SubPage(子类)中的控件,同时又显示BasePage(基类)中的控件?
问题点数:100、回复次数:8Top
1 楼saucer(思归)回复于 2005-04-01 23:51:04 得分 50
>>>BasePage(基类)里包含一些控件,比如TextBox,Button.
how did you create these controls? are they in the aspx page?
ASP.NET 1.* doesn't support aspx page control inheritance, you will be able to use a mechanism called "MasterPage" in ASP.NET 2.0 to share controlsTop
2 楼2bno1(因牛被判八年)回复于 2005-04-02 00:24:07 得分 0
谢谢思归大哥。
不过我现在用的是1.1 .net framework。所以还无法使用"MasterPage"。
我的直觉是SubPage从BasePage继承,那初始化SubPage前必然先初始化BasePage,难道创建控件不是在初始化Page时隐式完成的吗?那我可不可以在BasePage的Init或者PageLoad时显式创建控件,并且在SubPage中显示呢?Top
3 楼Sunmast(速马@Redmond, WA)回复于 2005-04-02 00:39:18 得分 30
1.1版本的ASP.NET确实无能为力
这是由于aspx页面,实际上是由ASP.NET引擎自动生成了一个新的类型并且继承了aspx.cs里面的类
而你继承的是BasePage(直接在.cs内定义的类型),而不是实际使用的类型,所以不行
在ASP.NET 2.0,ASP.NET引擎生成的是partial类型(也就是一个类可以在多个单元内定义),这样才可以提供MasterPage的概念。而partial类型在.NET 2.0才得到支持
你可以这么模拟
不用继承
在BasePage内放一个PlaceHolder,然后把需要做成子类的页面做成用户控件(ascx)
然后动态的加载PlaceHolder内子控件即可
(缺点是URL始终只有一个)Top
4 楼yezie(椰子)(.Net)回复于 2005-04-02 00:44:22 得分 10
现在还只能用用户控件解决Top
5 楼HONGDUN()回复于 2005-04-02 01:02:41 得分 10
为什么需要实现在基类里头定义控件呢。
而2.0提出MasterPage是出于哪方面考虑的呢。
请高手指点。。谢谢!·Top
6 楼2bno1(因牛被判八年)回复于 2005-04-02 10:12:33 得分 0
因为有很多页面具有相同的控件,
比如资料查询页面,会有查询钮,DataGrid等相同的控件,
而且这些控件的事件处理具有相同的处理逻辑,所以我就希望把这些共同的控件及处理逻辑放到基类里。
但是如果ASP 1.*不支持控件继承的话,那我美好的设想也就泡汤拉,只能另寻办法,也许只能使用UserControl了,但这样的话每个页面都要拖一个相同的UserControl:(
Top
7 楼coldpanth(^War3^)回复于 2005-04-02 11:08:31 得分 0
有创意Top
8 楼minghui000(沉迷网络游戏)回复于 2005-04-02 19:09:33 得分 0
帮你顶一下
Top




