در این ساعت از فکر بکر به معرفی شیئ بسیار کاربردی Http Context می پردازیم. از آنجاکه هر برنامه نویس باید با این شیئ آشنایی داشته باشد لذا تصمیم گرفتم مطلبی هرچند ناچیز رو برای علاقمندان ارائه بدم.
شیئ Http Context در واقع اطلاعات موجود به ازای هر تقاضا را در خود نگه میدارد این اطلاعات میتواند شامل Request, Response, Server, Session, Cache, User و ... باشد.
شی ئ Http Context به ازای شروع تقاضا(Request) توسط Asp.net ایجاد میشود و با کامل شدن تقاضا از بین میرود. برای دانش بیشتر در مورد http context به چند مثال کاربردی می پردازیم.
مخفی سازی QUERY STRING با استفاده از SERVER.TRANSFER
گاهی اوقات برای رفتن به صفحه دیگر مجبوریم از متد Server.Transfer() استفاده کنیم و برای انتقال اطلاعات طبق کد زیر عمل میکنیم.
Source Form
Context.Items.Add("empID", "123456");
Server.Transfer("Destination.aspx");
Destination Form
string empID = Context.Items["empID"].ToString();
Response.Write(empID);
در کد بالا از خاصیت collection شی ئ httpcontext که دارای دو پارامتر key و value میباشد جهت نگهداری اطلاعات استفاده نمودیم و در صفحه مقصد آنرا بازیابی کردیم.و همچنین توانستیم از بدون استفاده ازquery string اطلاعات را به صفحه مقصد ارسال نماییم.
به کد زیر دقت کنید.
Source Form
Employee emp = new Employee();
emp.FirstName = "Satheesh";
emp.LastName = "Babu";
Context.Items.Add ("emp", emp);
Server.Transfer("Destination.aspx");
Destination Form
Employee emp = Context.Items["emp"] as Employee;
Response.Write(emp.FirstName+" " + emp.LastName);
اکثر کاربران بر این باورند که کد بالا فقط در قسمت CodeBehind قابل استفاده هستند اما میبینید که با استفاده از شیئ httpcontext قابل دستیابی میباشد.
شیئ httpcontext دارای یک خاصیت static به نام Current میباشد و این خاصیت تمامی ارجاعات موجود در تقاضای فعلی را به ما برمیگرداند.با توجه به کد زیر
public class AccessPageObjects
{
public AccessPageObjects()
{
// TODO: Add constructor logic here
public void Print()
{
HttpContext context = HttpContext.Current;
context.Response.Write("Test");
context.Session["Key"] = "Value";
string user = context.User.Identity.Name;
}
}
جهت یاداوری :درج فضای نام System.Web در کد بالا ضروری میباشد
انقال اطلاعات به usercontrol با استفاده از Context.Item Collection.
Source Form
Employee emp = new Employee();
emp.FirstName = "Satheesh";
emp.LastName = "Babu";
Context.Items.Add("emp", emp);
Server.Transfer("Destination.aspx");
UserControl
public partial class WebUserControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
Employee emp = Context.Items["emp"] as Employee;
Response.Write(emp.FirstName + " " + emp.LastName + " in user control.");
}
}
امیدوارم این مطلب مورد توجه شما دوستان قرار گرفته باشه