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

آموزش 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"));
        }

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


تاریخ انتشار : ۲۴ آذر ۱۳۹۴



دیدگاه ها :