دسته بندی ها
06:23 1400/03/06

تفاوت دستور Redirect و RedirectToAction در Core چیست ؟

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 510     رتبه کاربر : 4
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3418
پاسخ دهنده : fateme 04:46 1400/03/07

تفاوت دستور Redirect و RedirectToAction

برای اینکه تفاوت بین دستورات Redirect و RedirectToAction را بهتر متوجه بشید از هر کدوم مثال هایی رو میارم براتون.

 

استفاده از دستور RedirectToAction با پارامتر

به صورت عادی توسط دستور RedirectToAction شما می تونید فقط درون یک کنترلر تغییر مسیر بدید. به عنوان مثال به کدهای زیر توجه کنید.

public class AccountController : Controller
{
   [HttpGet]
   public IActionResult Login()
   {
       return RedirectToAction("/Account/Panel");
       //Or
       //return RedirectToAction("Panel","Account");
   }

   [HttpGet]
   public IActionResult Panel()
   {
      return View();
   }
}

در مثال بالا دو Action به نام های Login و Panel داریم که هر دو اکشن در کنترلر Account قرار دارد. خب برای اینکه کاربر را از اکشن Login به اکشن Panel هدایت کنیم می تونیم از دستور RedirectToAction استفاده کنیم.

 

استفاده از دستور RedirectToAction بدون پارامتر

از دستور RedirectToAction به صورت ساده و بدون داشتن پارامتر هم می تونید استفاده کنید. به مثال زیر توجه کنید.

[HttpGet]
public IActionResult Product(int id)
{
    var product = RetrieveProduct(id);
    return View(product);
}

[HttpPost]
public IActionResult Product(int id, Product product)
{
    UpdateProduct(product);
    return RedirectToAction();
}

در مثال بالا بعد از اجرای اکشن Product به صورت HttpPost مجدد به اکشن Product به صورت HttpGet بر می گردد.

 

استفاده از دستور RedirectToAction و هدایت کاربر به Area جدید

شما با استفاده از دستور RedirectToAction میتونید کاربر رو به یک کنترلر جداگانه در یک Area دیگه هم هدایت کنید. برای این منظور به مثال زیر توجه کنید.

public class AccountController : Controller
{
   [HttpGet]
   public IActionResult Login()
   {
       return RedirectToAction("Index","Home", new { Area = "myArea"});
   }
}

در دستور بالا کاربر به کنترلر Home و اکشن Index که در Area با نام myArea وجود دارد هدایت می شود. در واقع بعد از اجرای دستور آدرس Url به صورت زیر خواهد بود.

https://myDomain.com/myArea/Home/Index

 

همچنین شما توسط دستور RedirectToAction میتونید به اکشن یا کنترلر دیگه پارامتر هم ارسال کنید. برای این منظور لینک زیر رو مطالعه کنید.

ارسال پارامتر توسط دستور RedirectToAction در Core

 

آموزش استفاده از دستور Redirect

خب با نحوه کار با دستور RedirectToAction آشنا شدید. از دستور Redirect برای هدایت کاربر به یک مسیر کامل استفاده میشه. به عنوان مثال :

return Redirect('https://porsnet.ir/ProgrammingCourse/Index');
//Or
return Redirect("/AdminPanel/Admin/Index");

خب کاربر در این حالت به مسیر مشخص شده هدایت میشه. همچنین دستور Redirect دارای overLoad های مختلف نیست. یعنی شما فقط به یک صورت می تونید از این دستور استفاده کنید که در بالا مشاهده می کنید.

 

ارسال پارامتر توسط دستور Redirect

خب اگر بخواید با استفاده از دستور Redirect پارامتری رو به یک مسیر ارسال کنید می تونید از روش زیر استفاده کنید.

return Redirect("Home/Index?id=2&name='ali'");

در مثال بالا دو پارامتر به نام Id به مقدار 2 و name با مقدار ali به مسیر Home و Index ارسال شده است.

 

 

بنابراین میشه گفت تفاوتهای بین دستور Redirect و RedirectToAction میشه :

  • تفاوت در نحوه ارسال پارامتر
  • دستور Redirect مستقیما باید Url نوشته شود ولی در RedirectToAction به صورت پارامتر نوشته می شود.
  • در صورتی که دستور RedirectToAction به صورت بدون پارامتر به کار بره به اکشنی هم نام با همون اکشنی که توش به کار رفته هدایت میشه.
به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود