aspx页面的“Page”对象

starrytime 2012-04-26 11:16:18
aspx页面的“Page”对象。

问题一:aspx页面和“Page”对象是什么关系?

问题二:
if (type == DocumentType.Excel)
{
//Excel
Response.AppendHeader("Content-Disposition", "attachment;filename=Report" + "EnergyModeling" + ".xls");
Response.ContentType = "application/ms-excel";
}

从aspx页面导出数据,必须要使用“Page”对象下的“Response”方法,新建的“HttpResponse ”对象不行啊?


问题三:Page.VerifyRenderingInServerForm
public override void VerifyRenderingInServerForm(Control control)
{}

导出“GridView”控件的数据,必须要重载下“Page对象”的“VerifyRenderingInServerForm”方法,为什么??? “VerifyRenderingInServerForm”方法的作用是什么???
...全文
188 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
starrycheng 2012-05-13
  • 打赏
  • 举报
回复
Chrome和FireFox都有调试CSS的功能,应该怎样开启这个功能呢???
  • 打赏
  • 举报
回复
<% 
adfafasfdfsafs8979
%>
  • 打赏
  • 举报
回复
aspx所动态解析产生的页面是从code-behind的类继承的子类。当asp.net编译aspx的时候,会产生两个类,一个就是“局部的”code-behind类,它跟你创建的同样是“局部的”code-behind类(常说的aspx附带的.cs文件)合并。不过aspx上面大量控件,所真正产生的类,是从这个类继承的子类。因此你在code-behind类上写的this,实际上是在父类上写this。

不过懂得面向对象编程的人都懂得,在父类上写this,运行时就等于调用实际的对象——它可能实例化时是子类类型。

在asp.net所产生的那个局部code-behind类,上面定义了各种protected的变量,与你的页面上的控件对应。所以你在自己的code-behind类中直接写“控件的id+.符号”的时候就可以即时看到智能语法提示了,这就是因为asp.net已经给动态声明好了这些变量的定义,只不过不是在你自己的code-behind的类,而是它的“另一半”局部代码文件中。而asp.net1.1时代没有这个“局部代码”编译技术,所以asp.net经常直接修改用户的.cs文件,这就很容易因为用户手动去删除、调整代码而造成混乱。

关键的概念是,aspx产生的类不是你的code-behind类,而是它的子类。


如果想看到asp.net动态产生的源代码,很简单。在aspx上编写一个服务器代码段
<% 
ad fafasfdfsafs8979
%》
然后不要编译整个网站,而是直接在页面上点击鼠标右键,选择“直接在浏览器上查看”,这时你在浏览器上会看到错误页,在页面下方就有一个连接“查看错误源”。点进去就能看到asp.net自动为aspx页面生成的c#代码了!
starrycheng 2012-05-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

1:当你程序部署之后首次请求页面的时候asp.net会把aspx文件和他的.cs文件合并为一个类 这个类继承自Page
2:page的response实际上是HttpContext.Current.Request的一个引用 如果你new一个HTTPResponse是不行的 因为他没有请求上下文 ,事实上HttpResponse这个对象必须由ASP.NET本身来创建
3:GridView我不清……
[/Quote]

能不能附加着问一下,“请求上下文”对象具体指什么???
starrycheng 2012-04-29
  • 打赏
  • 举报
回复
导出“GridView”控件的数据,必须要重载下“Page对象”的“VerifyRenderingInServerForm”方法,为什么??? “VerifyRenderingInServerForm”方法的作用是什么???
starrycheng 2012-04-28
  • 打赏
  • 举报
回复


[Quote=引用 6 楼 的回复:]

继承关系你调用this指的还是当前实例自身,如果要访问其基类Page那么用的关键字是base
引用 4 楼 的回复:

引用 3 楼 的回复:

好问题,如果是继承关系,那么在当前界面中打"this."这里的this是不是就指page对象?


同样的疑问。。。
[/Quote]

Yes,3Q...
xboxeer 2012-04-27
  • 打赏
  • 举报
回复
继承关系你调用this指的还是当前实例自身,如果要访问其基类Page那么用的关键字是base
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

好问题,如果是继承关系,那么在当前界面中打"this."这里的this是不是就指page对象?


同样的疑问。。。
[/Quote]
xboxeer 2012-04-27
  • 打赏
  • 举报
回复
1:当你程序部署之后首次请求页面的时候asp.net会把aspx文件和他的.cs文件合并为一个类 这个类继承自Page
2:page的response实际上是HttpContext.Current.Request的一个引用 如果你new一个HTTPResponse是不行的 因为他没有请求上下文 ,事实上HttpResponse这个对象必须由ASP.NET本身来创建
3:GridView我不清楚 但是如果是repeater的话只要调用RenderTo方法就可以了 直接将目标内容写入一个文本流中
starrycheng 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

好问题,如果是继承关系,那么在当前界面中打"this."这里的this是不是就指page对象?
[/Quote]

同样的疑问。。。
orochiheart 2012-04-26
  • 打赏
  • 举报
回复
好问题,如果是继承关系,那么在当前界面中打"this."这里的this是不是就指page对象?
luoyangkang 2012-04-26
  • 打赏
  • 举报
回复
这是父子关系,如果继承了page对象,刚子页面可以调用你页面的任何方法
starrycheng 2012-04-26
  • 打赏
  • 举报
回复
每一个aspx页面都继承字一个“Page”对象,Right???

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧