最近做了幾個小例子,要用到ASP.NET的一般處理程序(Handler)。遇到了一個小問題。 解決這個小問題非常簡單,只是把函數里的局部變量變成全局變量就解決了,可是有時候人比較笨,比如像我就有點。。需要想一想。
說一下這個小問題。在一般處理程序里,想添加一個方法,輸出一個話Hi Handler。可是發現在這個方法里沒辦法用context.Respose.Write這句。例如如下代碼:
namespace 圖片處理
{
public class HandlerTest : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
SayHello();
}
public void SayHello()
{
context.Response.Write("Hi Handler");
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
我們可以看到在方法SayHello里是沒辦法用context.Response.Write("Hi Handler");因為context只能在ProcessRequest里用。那這個時候怎么辦?
我們在ProcessRequest方法外面定義在一個HttpContext的變量,例如:private HttpContext context;再在ProcessRequest給這個變量賦上值this.Context=context
例如代碼如下:
public class HandlerTest : IHttpHandler
{
private HttpContext context;
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
this.context = context;
SayHello();
}
public void SayHello()
{
context.Response.Write("Hi Handler");
}
public bool IsReusable
{
get
{
return false;
}
}
}
這時候SayHello方法里就可以使用context.Response.Write("Hi Handler");了,是不是很簡單呢? 對於高手的你,當然不屑一看。
