类里实例化page类为什么不能用.

tommyfan 2006-05-01 07:44:07
首先我在类(Class1.cs)里实例化了一个page类
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

public static void o(string str)
{
System.Web.UI.Page ps = new System.Web.UI.Page();
ps.Response.Write(str);
}
}

==============================================

然后在WebForm1.aspx.cs里pageload事件里这样的写

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Class1.o("hello");
}
=================================================
结果出现错误,错误信息是这样写的

异常详细信息: System.Web.HttpException: 响应在此上下文中不可用。
...全文
234 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tommyfan 2006-05-02
  • 打赏
  • 举报
回复
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

public static void o(string str)
{
this.Context.Current.Response.Write(str);
}
}
试试这样写


这样写的话不觉得很烦吗?
如果我的类里要大量用到page的一些属性(比如request,session,response..)
那不是每一次用的时候都要写这么长一串.
这也是我要实例化page的原因..我本来就是这样写的..
  • 打赏
  • 举报
回复
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

public static void o(string str)
{
this.Context.Current.Response.Write(str);
}
}
试试这样写
tommyfan 2006-05-02
  • 打赏
  • 举报
回复
我现在是这样写
类里是
public class PublicFunction
{
private System.Web.UI.Page _page;
public System.Web.UI.Page page{set{_page = value;}get{return _page;}}

public PublicFunction(System.Web.UI.Page Page)
{
//
// TODO: 在此处添加构造函数逻辑
//
_page = Page;
debug("初始化通用过程函数类");

}

#region 输出类函数

#region 基本输出
public void o(string str)
{
page.Response.Write (str);
}
#endregion
===============================
现在类里只要出现request、response、session等我就用了page这个属性
================================
aspx后台onload事件这样写
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
PublicFunction f = new PublicFunction(Page);
f.page = Page;
f.o("hello");
}

这样可以正常运行response了.可是这样似乎有点取巧..
请问有没有更好的办法
tommyfan 2006-05-02
  • 打赏
  • 举报
回复
OK。。搞定。。散分..
Ivony 2006-05-02
  • 打赏
  • 举报
回复
我汗到死……

你不会:
HttpContext context = HttpContext.Current;

然后以后就:
context.Response、context.Session等等了啊……
gzlaspnet 2006-05-02
  • 打赏
  • 举报
回复
public static void o(Page ps,string str)
{
//System.Web.UI.Page ps = new System.Web.UI.Page();
ps.Response.Write(str);
}

Class1.Write(this, "Hello")
最后一句也可:
Class1.Write(this.Page, "Hello")



menuvb 2006-05-01
  • 打赏
  • 举报
回复
虽然你实例化了Page类,但它并不具有Response等功能。大致原因在于HTTP请求根据没有传递到CLASS1的实例化的类中。就像我们在HTTPMODULE调用进程一样,因为它根本不具有httpcontext,你必须要传递值。
menuvb 2006-05-01
  • 打赏
  • 举报
回复
public static void o(Page ps,string str)
{
//System.Web.UI.Page ps = new System.Web.UI.Page();
ps.Response.Write(str);
}

Class1.Write(this, "Hello")
ljhkim6 2006-05-01
  • 打赏
  • 举报
回复
this.Context.Current.Response.Write(str);
bluemoonright 2006-05-01
  • 打赏
  • 举报
回复
你的PageLoad还没有完成,你让Response住哪里write,而且你为什么要这样做呢?想动态生成页面吗?

62,046

社区成员

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

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

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

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