تنفيذ عمليات Redirections في Action Methods

-

بنتعرف في هذا الدرس على الطرق المختلفة لاعادة التوجيه في Actions في Controllers. هناك طرق عديدة لذلك مثل:

  • Redirect
  • RedirectPermanent
  • RedirectToRoute
  • RedirectToRoutePermanent
  • RedirectToAction
  • RedirectToActionPermanent
تمام نبدأ فيهم ونتعرف عليهم بالتفصيل .

Redirect
يتم استخدام Redirect method  لإجراء إعادة توجيه مؤقتة temporary redirection  (HTTP 302). يأخذ عنوان URL  ك string  لإعادة التوجيه ويعيد instance لفئة RedirectResult.
مثال: تقوم action أدناه باسم RedirectAction بإعادة توجيه مؤقت إلى URL -– /List/Search.

public RedirectResult RedirectAction() => Redirect("/List/Search");


RedirectPermanent

تشبه طريقة RedirectPermanent طريقة Redirect إلا أنها تعيد توجيه المستخدم بشكل دائم (HTTP 301).
مثال: تقوم طريقة الإجراء أدناه باسم RedirectAction بإعادة توجيه دائم إلى URL -– /List/Search.

public RedirectResult RedirectAction() => RedirectPermanent("/List/Search");

RedirectToRoute

إذا كنت ترغب في إعادة توجيه المستخدم باتباع مسارات التطبيق الخاص بك، فيجب عليك استخدام طريقة RedirectToRoute() . يقوم بإعادة التوجيه المؤقت ويأخذ نوعًا مجهولاً ك parameter. ثم يتم تمرير خصائص anonymous type إلى routing system لإنشاء عنوان URL.
لنأخذ مثال على ذلك، route الافتراضي في التطبيق هو 

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

أضف الطريقة التالية لاستخدام RedirectToRoute 

public RedirectToRouteResult Redirect() {
    RedirectToRoute(new { controller = "Admin", action = "Users", ID = "10" });
}

سيتم توجيه المستخدم الى /Admin/Users/10

RedirectToRoutePermanent

إن RedirectToRoutePermanent مشابه لطريقة RedirectToRoute إلا أنه يعيد توجيه المستخدم بشكل دائم.
مثال

public RedirectToRouteResult Redirect() {
    RedirectToRoutePermanent(new { controller = "Admin", action = "Users", ID = "10" });
}

RedirectToAction
تقوم طريقة RedirectToAction بإجراء إعادة توجيه مؤقتة ل given action method.
تقوم هذه الطريقة بإرجاع مثيل لفئة RedirectToActionResult.
يتم تشكيل عنوان URL لإعادة التوجيه بناءً على مسارات التطبيق الخاص بك.
ضع في اعتبارك أن مسار التطبيق الافتراضي هو:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

فكر الآن في تطبيق طريقة ()RedirectToAction  في Index View كما هو موضح في الكود أدناه:

public class HomeController : Controller
{
    public RedirectToActionResult Index()
    {
        return RedirectToAction("List");
    }
      
    public RedirectToActionResult List()
    {
        return View();
    }
}

لذلك سيعيد هذا توجيه المستخدم (بناءً على المسارات) إلى

URL - /Home/List.

إذا أعطيت action method ، فإن ASP.NET Core يفترض أنك تشير إلى action method في current controller.
لذلك لإعادة التوجيه إلى Controller مختلف، تحتاج إلى تحديد اسم Controller أيضًا. في الكود أدناه، نقوم بإعادة التوجيه إلى action  باسم Customer في Controller باسم List:

public RedirectToActionResult Index()
{
    return RedirectToAction("Customer","List");
}
RedirectToActionPermanent

تقوم الطريقة RedirectToActionPermanent بإعادة التوجيه بشكل دائم. في جميع الحالات الأخرى يكون مشابهًا لطريقة RedirectToAction.
مثال:

public RedirectToActionResult Index()
{
    return RedirectToActionPermanent("List");
}