最近做了幾個小例子,要用到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");了,是不是很簡單呢? 對於高手的你,當然不屑一看。