(一)实例1:
在asp.net程序中添加了一个 类.cs 如下
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace My
{
public class Yuna: System.Web.UI.Page
{
public Yuna()
{ }
public void P1()
{
Response.Write("调用P1");
}
public void P2()
{
Response.Write("调用P2");
}
}
}
--------------------------------------------------------
在其它的网页后台编码文件中该如何引用?我Page_Load中我这样写的,提示响应在此上下文中不可用,错误!
private void Page_Load(object sender, System.EventArgs e)
{
Yuna y = new Yuna();
y.P1();
y.P2();
}
--------------------------------------------------------------------
解决方案:
public class Yuna {
public Yuna()
{ }
public void P1()
{
System.Web.HttpContext.Current.Response.Write("调用P1");
}
public void P2()
{
System.Web.HttpContext.Current.Response.Write("调用P2");
}
Yuna y = new Yuna();
y.P1();
y.P2();
你这个 y 是没有经过ASP.NET初始化的,所以没有关联 HttpContext 。
一般 Page 实例都不应该由用户创建。ASP.NET创建Page后,会调用它的一个内部的方法ProcessRequest并且把HttpContext传进去的。你没有那一步,所以不行。
(二)实例2:
using System;
namespace Txl
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Fail:System.Web.UI.Page
{
public void HtmlInfo()
{
Response.Write("sadf");
}
}
}
在另一页中调用
private void Page_Load(object sender, System.EventArgs e)
{
Fail f=new Fail();
f.HtmlInfo();
//Response.Write(x);// 在此处放置用户代码以初始化页面
}
响应在此上下文中不可用。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 响应在此上下文中不可用。
源错误:
行 10: public void HtmlInfo()
行 11: {
行 12: Response.Write("sadf");
行 13: }
行 14: }
--------------------------------------------------------------------
解决方案:
只有你的页面是ASP.NET调用的,你的Page类里的Response对象才有意义。
如果你需要在你自己的类里调用Response,请用System.Web.HttpContext.Current.Response。