ریدایرکت شدن به اکشن دیگر


آموزش MVC –> جلسه اول –> قسمت هفتم

بدین منظور اگر بخواهیم به یک اکشن در کنترولر جاری برویم فقط لازم است نام اکشن را بنویسیم : 

RedirectToAction(actionName: "Action1")

ولی اگر اکشن مقصد در کنترولر دیگری باشد باید نام کنترولر را نیز بنویسیم :

RedirectToAction(controllerName: "Home", actionName: "Action2")

و اکشن کلی بصورت زیر است :

 
public System.Web.Mvc.ActionResult Learn1160(int id)
{
    switch (id)
    {
        case 1:
        {          
            return (RedirectToAction(actionName: "Action1"));
        }
        case 2:
        {
            // Solution (1)
            // ی در همین کنترلر برویم Action اگر بخواهیم به
            return (RedirectToAction(actionName: "Action2"));
            // /Solution (1)
            // Solution (2)
            // ی در کنترلر دیگری برویم Action اگر بخواهیم به
            return (RedirectToAction(actionName: "Action2", controllerName: "Home"));
            // /Solution (2)
            // Solution (3)
            return (RedirectToAction(controllerName: "Home", actionName: "Action2"));
            // /Solution (3)
        }
        default:
        {
            string strContent = "Id value is not valid!";
            return (Content(strContent));
        }
    }
}

در اکشن فوق id ورودی را بررسی می کنیم . با شرایطی خاص به Action1 میرویم و با شرایطی دیگر به Action2 .

نکته : میتوانستیم دستور فوق را بدون ذکر نام پارامتر بنویسیم (بصورت زیر) :

RedirectToAction("Home","Action2")

پیش فرض تابع ، اولین پارامتر ActionName است و دومی ControllerName . ولی اگر نام پارامترها را هم بنویسیم بهتر است . چرا که می توانیم جای آن دو را با هم جابجا کنیم .

نکته : علاوه بر دستور RedirectToAction دستور دیگری داریم بنام RedirectPermanent که در مبحث سئو کاربرد دارد . برای جا افتادن مطلب به مثال زیر دقت کنید : فرض کنید یک اکشن ای داریم بنام AboutUs که مثلا ۶ ماه است که طراحی شده و تمام موتورهای جستجو آنرا ایندکس کرده اند . اکنون تصمیم گرفته ایم نام آنرا تغییر دهیم به نام About . برای اینکه مثلا گوگل صفحه قبلی من را گم نکند باید یک اکشنی بسازیم بنام About و در اکشن قبلی یعنی AboutUs دستور زیر را بنویسیم تا هر وقت ربات های جستجوی گوگل به این اکشن رسیدند اتوماتیک و برای همیشه به اکشن About ریدایرکت شوند :

 
[System.Web.Mvc.HttpGet]
public System.Web.Mvc.ActionResult AboutUs()
    {
        return (RedirectPermanent(url: "About"));
    }
}

امیدوارم تا اینجا از مقالات وب سایت محتوا استفاده لازم را برده باشید . در مقاله بعدی میخواهیم وقتی به اکشنی ریدایرکت میکنیم به آن اکشن پارامتر نیز ارسال کنیم .



دیدگاه ها :