مدیریت Session اختصاصی برای کنترلر در MVC
دوشنبه 29 شهریور 1395مدیرت وضعیت ، یک مسئله مهم و رایج در برنامه های تحت وب به حساب می آید که ما در ASP.NET MVC میتوان Sessoin کنترلر های مشخص شده را مدیریت کنیم که به ما کمک می کند زمانی که Session ضروری نیست آن را غیر فعال کنیم .
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
- ASP.net MVC
- 2k بازدید
- 2 تشکر