مرشحات الإجراء في MVC [أنواع المرشحات مع أمثلة]

نشرت: 2021-03-04

جدول المحتويات

ASP.NET MVC - مرشحات الإجراءات

في مرشحات MVC (Model-View-Controller) ، نستخدم المنطق الإضافي وفقًا للوظائف المختلفة أو المنطق من معالجة طلب إطار MVC.

تنفذ مرشحات MVC عملية لمستويات مختلفة: على سبيل المثال ، التفويض والتسجيل والتخزين المؤقت.

يمكننا اعتبار عامل تصفية الإجراء كسمة يمكننا تنفيذها لطريقة إجراء وحدة التحكم للقيام بالتعديل وفقًا لمنطق العمل.

يمكننا اعتبار مرشحات MVC من النظام. يتم تعريف السمة على أنها الفئة والطريقة والخصائص والحقول.

اقرأ أيضًا: مشروع MVC

يشتمل إطار عمل ASP.NET MVC على عوامل تصفية إجراءات مختلفة

تخويل : مرشح الإجراءات هذا لديه القدرة على تقييد الوصول إلى دور مستخدم معين.

OutputCache : هو مرشح الإجراء ، ويخزن نتيجة طريقة عمل وحدة التحكم في الوقت المحدد.

HandleError : عندما يتم تنفيذ إجراء وحدة التحكم هذا ، فإنه يعالج الأخطاء في سيناريو معين في حالة فشل الكود. يسمح لك بإنشاء مرشح الإجراء المخصص الخاص بك.

على سبيل المثال ، يمكننا إنشاء عامل تصفية إجراء مخصص لتنفيذ نظام مصادقة مخصص.

مصدر

خط أنابيب التصفية في تدفق دورة حياة الطلب والاستجابة:

مصدر

يوفر المرشح فئتين من تنفيذ المنطق في الكود ، ويقوم بتنفيذ تعريفات مختلفة للواجهة-

  1. متزامن
  2. غير متزامن

المرشحات المتزامنة

في مرشح المزامنة ، يمكننا تشغيل الكود قبل وبعد خط الأنابيب عند معالجته ؛ يمكننا اعتباره أسلوب OnStageExecuting و OnStageExecuted .

مرشحات غير متزامنة

يتم وصف المرشحات غير المتزامنة بطريقة واحدة ، والتي لها طرق

  • OnAction التنفيذ
  • تم تنفيذ OnAction
  • OnActionExecutionAsync

مقتطفات التعليمات البرمجية أدناه هي نوع الإعلان

فئة عامة TimestampFilter: IActionFilter، IAsyncActionFilter

{

الفراغ العام OnActionExecuting (سياق ActionExecutingContext)

{

Context.ActionDescriptor.RouteValues ​​[“timestamp”] = DateTime.Now.ToString ()؛

}

OnActionExecuted الفراغ العام (سياق ActionExecutedContext)

{

var ts = DateTime.Parse (Context.ActionDescriptor. RouteValues ​​[“timestamp”]). AddHours (1) .ToString ()؛

Context.HttpContext.Response.Headers [“X-EXPIRY-TIMESTAMP”] = ts ؛

}

المهمة العامة غير المتزامنة OnActionExecutionAsync (سياق ActionExecutingContext ، ActionExecutionDelegate التالي)

{

this.OnActionExecuting (سياق) ؛

var resultContext = wait next () ؛

this.OnActionExecuted (resultContext) ؛

}

}

أنواع مرشحات الإجراءات في MVC

يحافظ إطار عمل ASP.NET MVC على عوامل تصفية مختلفة:

عوامل تصفية التخويل: ينفذ خاصية IAuthorisationFilter.

مرشحات الإجراء: يقوم بتنفيذ سمة IActionFilter.

عوامل تصفية النتائج : قم بتنفيذ سمة IResultFilter.

عوامل تصفية الاستثناء: ينفذ سمة IExceptionFilter.

مرشحات التفويض

يمكننا استخدامه لإمكانية وصول المستخدم ، ويمكننا الإعلان عنه قبل تنفيذ طريقة الإجراء في وحدة التحكم.

يعمل عامل تصفية التخويل على تمكين سمتين مضمنتين ، على سبيل المثال: Authorize و AllowAnonymous

يمكننا استخدام هذه في منطق مخصص في الكود وفقًا لمتطلبات أعمالنا.

مقتطف الشفرة أدناه هو مثال لفلاتر التفويض

[تفويض]

الطريقة العامة ActionResult SecureMethod ()

{

عودة عرض () ؛

}

[AllowAnonymous]

نتيجة غير آمنة ()

{

عودة عرض () ؛

}

الطريقة العامة ActionResult SecureMethod ()

{

عودة عرض () ؛

}

مرشحات العمل

يمكننا وصف عوامل تصفية الإجراء قبل تنفيذ طريقة الإجراء وبعد طريقة الإجراء.

يحمل نوعين من الأساليب.

  1. تم تنفيذ OnAction
  2. OnAction التنفيذ

مقتطف الشفرة أدناه هو مثال لفلاتر الإجراء

باستخدام النظام ؛

باستخدام System.Collections.Generic ؛

باستخدام System.Linq ؛

باستخدام System.Web ؛

باستخدام System.Web.Mvc ؛

مساحة الاسم البرنامج التعليمي ActionFilter.Filters

{

فئة عامة Myactionfilter: FilterAttribute ، IActionFilter

{

OnActionExecuted باطل عام (عامل تصفية ActionExecutedContext)

{

إذا (filterContext.HttpContext.Session [“UserID”]! = فارغ)

{

filterContext.Result = newRedirectResult (“/ الصفحة الرئيسية / الفهرس”) ؛

}

آخر

{

filterContext.Result = newRedirectResult (“/ تسجيل الدخول / تسجيل الدخول”) ؛

}

}

عمومي باطل OnActionExecuting (ActionExecutingContext filterContext)

{

إذا (filterContext.HttpContext.Session [“UserID”]! = فارغ)

{

filterContext.Result = newRedirectResult (“/ الصفحة الرئيسية / الفهرس”) ؛

}

آخر

{

filterContext.Result = newRedirectResult (“/ تسجيل الدخول / تسجيل الدخول”) ؛

}

}

}

}

[TutorialActionFilter]

[AcceptVerbs (HttpVerbs.Get)]

Public ActionResult GetPerson ()

{

الشخص p = شخص جديد () ؛

عرض العودة ("الشخص" ، ص) ؛

}

مرشحات النتائج

يمكننا وصف عوامل تصفية الإجراء قبل تنفيذ طريقة الإجراء وبعد تنفيذ طريقة الإجراء.

يحمل نوعين من الأساليب.

  1. تم تنفيذ OnResult
  2. OnResult التنفيذ

مقتطف الشفرة أدناه هو مثال لمرشحات النتائج

باستخدام النظام ؛

باستخدام System.Collections.Generic ؛

باستخدام System.Linq ؛

باستخدام System.Web ؛

باستخدام System.Web.Mvc ؛

مساحة الاسم ResultFilter.Filters

{

فئة عامة MyResultfilter: FilterAttribute ، IResultFilter

{

OnResultExecuted باطل عام (عامل تصفية ResultExecutedContext)

{

إذا (filterContext.HttpContext.Session [“UserID”]! = فارغ)

{

filterContext.Result = newRedirectResult (“/ الصفحة الرئيسية / جهة اتصال”) ؛

}

آخر

{

filterContext.Result = newRedirectResult (“/ تسجيل الدخول / تسجيل الدخول”) ؛

}

}

OnResultExecuting باطلة عامة (ResultExecutingContext filterContext)

{

إذا (filterContext.HttpContext.Session [“UserID”]! = فارغ)

{

filterContext.Result = newRedirectResult (“/ الصفحة الرئيسية / جهة اتصال”) ؛

}

آخر

{

filterContext.Result = newRedirectResult (“/ تسجيل الدخول / تسجيل الدخول”) ؛

}

}

}

}

[MyResultfilter]

[AcceptVerbs (HttpVerbs.Get)]

Public ActionResult GetPerson ()

{

الشخص p = newPerson () ؛

عرض العودة ("الشخص" ، ص) ؛

}

مرشحات الاستثناء

يمكننا استخدام هذه عندما تقوم وحدة تحكم أو طريقة عمل برمي الاستثناء.

عامل تصفية الاستثناء هذا مهم للقبض على الاستثناء.

يوجد أدناه مقتطف الشفرة لاستخدام عوامل تصفية الاستثناءات

باستخدام النظام ؛

باستخدام System.Collections.Generic ؛

باستخدام System.Linq ؛

باستخدام System.Web ؛

باستخدام System.Web.Mvc ؛

مساحة الاسم ExceptionFilter.Filters

{

فئة عامة MyExceptionFilter: FilterAttribute ، IExceptionFilter

{

OnException عام باطل (ExceptionContext filterContext)

{

filterContext.Controller.ViewBag.onExceptionError = “اسم مرشح ExceptionFilter”؛

filterContext.HttpContext.Response.Write ("مرشح ExceptionFilter يسمى") ؛

}

}

}

[MyExceptionFilter]

فئة عامة HomeController: Controller

{

[AcceptVerbs (HttpVerbs.Get)]

Public ActionResult GetPerson ()

{

الشخص p = newPerson () ؛

عرض العودة ("الشخص" ، ص) ؛

}

}

اقرأ أيضًا: مشروع Java MVC

تعلم دورات البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

خاتمة

نأمل أن تساعدك هذه المقالة في فهم عوامل تصفية الإجراء في MVC.

إذا كنت مهتمًا بمعرفة المزيد حول التطوير الكامل ، فقم بإلقاء نظرة على برنامج upGrad & IIIT-B's Executive PG في تطوير البرامج الكامل المكدس المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، وأكثر من 9 مشاريع ، و المهام ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

ما هي هياكل البيانات في البرمجة؟

هياكل البيانات هي الطريقة التي نرتب بها البيانات في البرنامج. أهم بنيتين للبيانات هما المصفوفات والقوائم المرتبطة. المصفوفات هي بنية البيانات الأكثر شيوعًا ، وهي الأسهل في الفهم. المصفوفات عبارة عن قوائم مرقمة للعناصر ذات الصلة. إنها سهلة الفهم والاستخدام ، لكنها ليست فعالة للغاية عند التعامل مع كميات كبيرة من البيانات. القوائم المرتبطة أكثر تعقيدًا ، لكنها يمكن أن تكون فعالة جدًا إذا تم استخدامها بشكل صحيح. إنها خيارات جيدة عندما يتعين عليك إضافة عناصر أو إزالتها في منتصف قائمة كبيرة ، أو عندما تحتاج إلى البحث عن عناصر في قائمة كبيرة.

ما هي الاختلافات بين القائمة المرتبطة والمصفوفات؟

في المصفوفات ، يتم استخدام الفهرس للوصول إلى عنصر. يتم تنظيم العناصر في المصفوفة بترتيب تسلسلي ، مما يسهل الوصول إلى العناصر وتعديلها إذا تم استخدام فهرس. المصفوفة لها حجم ثابت. يتم تخصيص العناصر في وقت إنشائها. في القائمة المرتبطة ، يتم استخدام المؤشر للوصول إلى عنصر. لا يتم بالضرورة تخزين عناصر القائمة المرتبطة بترتيب تسلسلي. القائمة المرتبطة لها حجم غير معروف لأنه يمكن أن تحتوي على عقد في وقت إنشائها. يتم استخدام المؤشر للوصول إلى عنصر ، لذلك يكون تخصيص الذاكرة أسهل.

ما هو المؤشر في سي؟

المؤشر هو نوع بيانات في لغة سي يخزن عنوان أي متغير أو وظيفة. يتم استخدامه بشكل عام كمرجع إلى موقع ذاكرة آخر. يمكن أن يحتوي المؤشر على عنوان ذاكرة لمصفوفة أو بنية أو وظيفة أو أي نوع آخر. يستخدم C المؤشرات لتمرير القيم إلى الدوال واستلامها منها. تُستخدم المؤشرات لتخصيص مساحة الذاكرة ديناميكيًا.