مدیریت Session اختصاصی برای کنترلر در MVC

دوشنبه 29 شهریور 1395

مدیرت وضعیت ، یک مسئله مهم و رایج در برنامه های تحت وب به حساب می آید که ما در ASP.NET MVC میتوان Sessoin کنترلر های مشخص شده را مدیریت کنیم که به ما کمک می کند زمانی که Session ضروری نیست آن را غیر فعال کنیم .

مدیریت Session اختصاصی برای کنترلر در MVC

Default ، زمانی که کاربر درخواست را به کنترلر می فرستد ، با کمک اینتر فیس IHttpHandler ، Session را بررسی می کند .

این عمل میتواند در  performance  برنامه تاثیر گذار باشد و فضای که مورد نیاز نیست را آزاد می کند . برای این کار از صفت  SessionState استفاده می کنیم .

حال میخواهیم ، صفت  SessionState  را بررسی کنیم  تا بتوان آن را به راحتی درک کنید .

SessionState  چیست ؟

Session State  یک صفت است که در Controller استفاده می شود که برای مدیریت و کنترل  پیش فرض ، ازsession behavior  استفاده می کند. برای استفاد از آن باید از فضای نام System.Web.SessionState استفاده کنیم .

 behavior  های  صفت  Session State :

1.Defualt

2.Disabled

3.Required

4.ReadOnly

بیاید آنها را مرور کنیم :

Defualt

Default ، زمانی که کاربر درخواست را به کنترلر می فرستد ، با کمک اینترفیس IHttpHandler ، Session را بررسی می کند .

مثال:

1. [SessionState(SessionStateBehavior.Default)]    
2.   public class HomeController : Controller    
3.   {    
4.       // Action methods     
5.         
6.   }   

Disabled

زمانی که SessionState بر روی disable باشد، زمانی که کاربر درخواست خود به کنترلر می فرستد ، Session بررسی نمی شود .این ویژگی بسیار مهم است ، زمانیکه شما می خواهید Session خود در کنترلر مشخص شده غیر فعال کنید میتوان از این صفت استفاده کنید .

مثال :

1. [SessionState( SessionStateBehavior.Disabled)]    
2. //controller     
3. public class HomeController : Controller    
4. {    
5.     // Action methods    
6.      
7. }    

Required

زمانی که SessionState بر روی Required باشد ، هر درخواست وجود Session را بررسی می کند و Session را برای یک کنترلر خاص فعال می کند ، این رفتار زمانی استفاده می شود که شما Session را برای درخواست هر کاربر نیاز دارید.

مثال :


1. [ SessionState( SessionStateBehavior.Required)]    
2. //controller     
3. public class HomeController : Controller    
4. {    
5.     // Action methods    
6.       
7. }  

ReadOnly

زمانی که SessionState بر روی ReadOnly باشد ، Session  نمیتواند تغییر کند یا اصلاح شود .

مثال:

1. [ SessionState( SessionStateBehavior.ReadOnly)]    
2. //controller     
3. public class HomeController : Controller    
4. {    
5.     // Action methods    
6.       
7. } 

در این قسمت میخواهیم نحوه مدیریت Session های یک کنترلر را مشخص کنیم .

مرحله اول : ایجاد یک برنامه MVC

1. برنامه Visual Studio را اجرا کنید .
2. یک
ASP.Net Web Application Template بسازید .
3.
MVC Empty  را انتخاب کنید .

مرحله دوم  : افزودن مدل

بر روی پوشه Models کلیک راست کلیک کرده و یک کلاس به نام EmpModel ایجاد می کنیم 

EmpModel.cs

1. public class EmpModel    
2. {    
3.    public string Name { get; set; }    
4. }  

مرحله سوم : حال یک کنترلر خالی ایجاد می کنیم .

برای این کار بر روی Controllers   کلیک راست کرده ، و در قسمت Add ،  Controller   را انتخاب می کنیم  .

سپس در مرحله بعد Empty را انتخاب می کنیم .

در آخر نام کنترلر خود را مشخص می کنیم و بر روی ok   کلیک می کنیم .

HomeController.cs

1. using System;  
2. using System.Web.Mvc;  
3. using SessionStateAttributeInMVC.Models;  
4. using System.Web.SessionState;  
5.   
6. namespace SessionStateAttributeInMVC.Controllers  
7. {  
8.     [ SessionState( SessionStateBehavior.Disabled)]  
9.     public class HomeController : Controller  
10.     {  
11.         // GET: Home  
12.         public ActionResult Index()  
13.         {  
14.             return View();  
15.         }  
16.         [HttpPost]  
17.         public ActionResult Index(EmpModel obj)  
18.         {  
19.             //store the session from user input and display into the view if session is enabled.  
20.             Session["Name"] = Convert.ToString(obj.Name);  
21.             return View();  
22.   
23.         }  
24.     }  
25. }

 در کد بالا ، صفت  Session State  را اضافه کرده ایم  و behavior آن را Disabled قرار می دهیم و در اکشن متد Post ، مقدار input را در session ذخیره سازی می کنیم .، و آن را در Index نمایش میدهیم .

مرحله چهارم : افزودن View از نوع strongly type :

بر روی پوشه View  کلیک راست کرده و یک View  که نام آن Index و مدل آن را EmpModel قرار می دهیم .

پس از اتمام این مراحل ، Index.cshtml به طور خودکار ایجاد می شود .

کد زیر Index.cshtml تشکیل می دهد :

1. using System;    
2. using System.Web.Mvc;    
3. using SessionStateAttributeInMVC.Models;    
4. using System.Web.SessionState;    
5.     
6. namespace SessionStateAttributeInMVC.Controllers    
7. {    
8.     [ SessionState( SessionStateBehavior.Default)]    
9.     public class HomeController : Controller    
10.     {    
11.         // GET: Home    
12.         public ActionResult Index()    
13.         {    
14.             return View();    
15.         }    
16.         [HttpPost]    
17.         public ActionResult Index(EmpModel obj)    
18.         {    
19.             //store the session from user input and display into the view if session is enabled.    
20.             Session["Name"] = Convert.ToString(obj.Name);    
21.             return View();    
22.     
23.         }    
24.     }    
25. }  
 حال برنامه را اجرا می کنیم  و درون TextBox مقداری وارد می کنیم ، پس از زدن دکمه افزودن ، آن مقدار با استفاده از Session نمایش داده می شود .

همان طور که مشاهده می کنید مقدار input  نمایش داده می شود با این دلیل که ما Session را فعال کرده ایم .

آموزش asp.net mvc

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید