private void Page_Load(object sender, EventArgs e)
{
}
protected void loginButton(object sender, EventArgs e)
{
}
这样没错我把 loginbutton 改为 private 就错了.这个我知道.响应按钮事件.
但是为什么Page_Load 为 private可以通过??它是初始化页面事件啊.但是为什么可以私有呢??
CS文件和ASPX文件 里面的页面类.不是继承关系的吗??谢谢!
{
}
protected void loginButton(object sender, EventArgs e)
{
}
这样没错我把 loginbutton 改为 private 就错了.这个我知道.响应按钮事件.
但是为什么Page_Load 为 private可以通过??它是初始化页面事件啊.但是为什么可以私有呢??
CS文件和ASPX文件 里面的页面类.不是继承关系的吗??谢谢!
解决方案 »
- 一个简单的DataGrid问题?
- 模式窗口返回数据,页面刷新后消失,怎么解决?在线等!
- !求救啊Datagrid 更新数据问题!
- FCK上传视频文件一直处于等待状态,在线等
- 我把timeout设成“240”,为什么我的session不能超过20分钟?
- 100分求教水晶报表分页问题,急
- 为什么没有值显示出来?(<%# pb_sContent%>嵌入HTML中)
- 求救!asp.net连接sql server出现错误,请各位大虾分析原因!
- 大家好,请问如解决某些系统中http协议不能传输以中文命名的文件或文件夹
- 请问有谁知道如何安装WebControls Version 1.0控件??
- 首次散分------所有HTTP 状态代码及其定义
- asp.net留言板
一个页面自身本来就是私有的,所以默认都取private都可以。
但如果你其他页面或地方需要调用该页面类或功能,则该页面的函数或相关代码就要用public,
我也不很明白怎样说清楚,大概这么看法。
一般 button 事件是回调的,已经 不是 在 该 页面类的生命周期 内了,所以 private 不行
页面生命周期一旦HTTP页面处理句柄被明确的定义了,ASP.NET运行时调用处理句柄的ProcessRequest方法来处理请求。通常,没有必要改变Page类提供的执行方法。页面执行是从FrameworkInitialize方法开始的,这个方法为页面构建控件树。该方法是TemplageControl类的受保护并且是虚方法。任何为aspx资源动态生成的句柄覆盖了该方法。在这个方法里,页面的所有控件树都被构建了。接下来,ProcessRequest方法使页面经历了不同的几个阶段:初始化、加载视图状态信息、回传数据、加载页面代码和执行回传的服务器事件。在这之后,页面转换到了显示模式:收集被更新的视图状态;产生HTML代码,并且传送到控制台。最后,页面卸载,请求的全部服务结束了。 在各个不同阶段里,页面处理了与web控件相关、程序员代码能够干预并解决一定问题的事件。其间一些事件是专门为那些内嵌控件和不能在.aspx代码级别处理的控件而设计的。一个页面要解决这样的事件,它能明确的注册成为合适的句柄。但是,为了和原有的Visual Basic编程模式有后向兼容性,ASP.NET也支持了隐含事件的形式。在默认情况下,页面会寻找和事件相关的方法名;如果找到和事件相匹配的方法,这个方法就被认为是这种事件的处理程序。ASP.NET提供了六种专门的方法名,他们是 Page_Init , Page_Load , Page_DataBind , Page_PreRender 和 Page_Unload 。这些方法这些方法在Page类中已经被定义过,他们是相应事件的处理程序。HTTP运行时将自动的将这些方法绑定到相关的页面事件,而不需要程序员去编写把事件和方法联系起来的代码。举个例子来说,在下面的代码中, Page_Load方法和页面的加载事件相关联: this.Load + = new EventHandler(this.Page_Load); 这种自动识别是被 @Page 预指令的AutoEventWireup 属性控制的。如果这个属性被置false ,应用程序必须显式声明和事件相关的方法。不自动关联页面事件代码的页面执行起来会快一些,是因为他们不需要在匹配上做过多的工作。在Visual Studio.NET 工程里可以把这个属性关闭掉。但是,默认设置是true,这意味着Page_Load方法被自动识别并被关联到相关的事件。页面执行包含了下表中按顺序列出的几个阶段,他们被标志成为应用程序级别的事件,同时也可能是一些受保护、重定义的方法:阶段
页面事件
可重定义的方法 页面初始化
Init 视图状态加载 LoadViewState 回传数据处理 控件里实现了IPostBackDataHandler接口的LoadPostData方法 页面加载
Load 回传数据变化检查 控件里实现了IPostBackDataHandler接口的RaisePostDataChangedEvent方法 回传事件处理
控件里定义的回传事件
控件里实现了IPostBackEventHandler接口的RaisePostBackEvent方法 页面预返回阶段PreRender 页面返回阶段
Render 页面卸载阶段
Unload
上表中列出的阶段有的在页面级别是不可见的,他们只是在服务器控件的作者编写继承于Page的类时会使用到。Init , Load , PreRender , Unload,再加上定义在内嵌控件中的回传处理事件,他们构成了页面的整个生命周期。
页面对象模型http://msdn2.microsoft.com/zh-cn/library/aa479007.aspx
你可以不用代码隐藏写下 就知道了
给你个拓展.到网上查查BasePage吧.
basepage中你可以重载page加载时的各种函数, 并定义自己的属性值. 从basepage继承的页面不必自已再重新写重载函数了, 其他页面引用从basepage继承的页面时可以直接访问basepage中定义的属性.
BasePage用于重写页面生命周期中某些阶段的处理方式,可以插入用户自己的逻辑,比如访问统计,身份验证,执行时间等等
http://topic.csdn.net/u/20071226/13/ebde04a4-615e-4766-b48a-05fa6bac07ec.html
这些都是类的继承oo思想的最好的实例.
比如.你在某个服务器文件夹里,就说金牌用户可操作的各个页面吧,你如果在每页判断权限很麻烦,你就可以编写个自定义page类,加上权限的判断等功能函块块.以后每个该文件夹所在页面只要简单地写上继承这个页面类即可.
oo思想很鲜明啊.
asp.net1.0和asp.net2.0的关系是不一样的 , 1.0的没研究过 , 举例说明2.0的吧 :
XXX.aspx和XXX.aspx.cs这两个文件被编译后会生成两个class , 分别是XXX.cs和ASPX_XXX.cs
其中ASPX_XXX.cs是继承XXX.cs的 ! 从这里可以体现出aspx页面中Inherit属性 !
那XXX.aspx.cs中的partial又怎么理解呢 :
XXX.cs这个类是一个partial类 ,它的内容放在两个不同的文件中 !
一个放XXX.aspx文件中声明的控件变量 , 一个放XXX.aspx.cs文件中定义的所有内容!所以XXX.aspx和XXX.aspx.cs这两个文件不是继承关系 , 编译后它们是同一个类 !写到这里也许有人会问 : 为什么XXX.aspx.cs中的方法不能是protected而要写成private ,
那是因为编译后生成的新类 ASPX_XXX.cs的缘故 , 真正的处理放在ASPX_XXX.cs里面 !
那是因为真正的处理放在ASPX_XXX.cs里面(ASPX_XXX.cs是继承XXX.cs的),如果是private根本访问不到。
我用vs2008本地IIS方式。按钮事件写成private的,也可以的啊
.aspx肯定是继承自.aspx.cs和.aspx.designer.cs的
但是,它们是部分类。最终.net会把他们编译成同一个.cs和dll的
所以都是类中,应该可以用private的
转别人的,我觉的对于这个问题说的很清楚而且易懂。