حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

بدست آوردن مقادیر Route از روی HttpContext در ASP.NET MVC

در ASP.NET MVC ساختار Route ها نقش بسیار مهمی رو بازی می کنند. Route ها در حقیقت نقش آدرس دهی منابع رو در برنامه تحت وبی که در حال توسعه هست بازی می کنند و ASP.NET MVC وابستگی زیادی به Route ها داره. ما بوسیله Route ها می تونیم به مواردی مانند نام Controller یا Action و پارامترهای مورد استفاده در Route دسترسی داشته باشیم. اما مواقعی هست که ما به صورت مستقیم نمی تونیم به این موارد دسترسی داشته باشیم، یعنی ساختار MVC دسترسی مستقیم به مجموعه Route رو به ما نمیده که برای این مورد باید از یک ترفند ساده استفاده کنیم. معمولاً در کلیه بخش های کد ما به شئ HttpContext که حاوی اطلاعات درخواست ارسالی به سمت سرور می باشد دسترسی داریم. بوسیله این شئ می توان به Route دسترسی داشت. به عنوان مثال، در بحث OutputCache زمانی که ما از قابلیت VaryByCustom استفاده می کنیم باید متدی با نام GetVaryByCustomString رو در کلاس MvcApplication یا همون فایل Global.asax.cs بنویسیم. پارامتر هایی که به این متد ارسال میشن یکی HttpContext هست و یکی دیگه مقدار متنی که ما به عنوان Custom Cache استفاده کردیم:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
public override string GetVaryByCustomString(HttpContext context, string custom)
{
    // your code
}

همانطور که ملاحظه می کنید ما در این متد دسترسی مستقیم به مقادیر Route نداریم، ولی به صورت زیر می توانیم از شئ context برای بدست آوردن مقادیر route استفاده کنیم:

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    var routes = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));
    var controller = routes.Values["controller"].ToString();
}

این قابلیت در هر جایی که ما دسترسی به شئ HttpContext داشته باشیم قابلیت استفاده هست، فقط به نکته ای که باید دقت کنید اینه که ما به عنوان پارامتر شئ context رو در قالب یک HttpContextWrapper به متد GetRouteData ارسال کردیم.

نویسنده: حسین احمدی

منبع: TOSINSO.COM

هر گونه نشر و کپی برداری با ذکر نام منبع و نویسنده بلامانع است


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات