مدیریت Action های ناشناخته در MVC

یکشنبه 19 اردیبهشت 1395

در این مقاله قصد داریم راه حلی برای خطاهای احتمالی در اجرای پروژه پیاده سازی کنیم. و می آموزیم که چگونه Action هایی را که نام آنها در کنترلر موجود نیست مدیریت کنیم.

مدیریت Action های ناشناخته در MVC

فرض کنید  یک متد  Action را با استفاده از نام  Action که در کنترلر دسترس نیست فراخوانی میکنیم به عبارت دیگر کنترلر درستی را فراخوانی میکنیم اما نام  action را که پاس میدهیم در کنترلر وجود ندارد. در این وضعیت نیاز به مدیریت این استثناها است. برای آن یک متد با نام  HandleUnKnownAction وجود دارد . این متد یک متد مجازی درون کلاس  abstract کنترلر است. هنگامی فراخوانی می شود که یک کنترلر درخواست شود اما متدی با نام action مشخص شده در کنترلر موجود نباشد. 

پیاده سازی آن را مرحله به مرحله خواهیم دید: 

یک پروژه  MVC با قالب  Empty ایجاد میکنیم. 

بر روی کنترلر راست کلیک کرده و از قسمت  Add گزینه  Controller را انتخاب میکنیم. برای ایجاد آن  به صورت خالی  MVC 5 Controller-Empty را انتخاب میکنیم.

نام کنترلر را  Home  قرار دهید.  پس از آن میبینیم که متد  ActionResult با نام  Index اضافه شده است. 

برای اضافه کردن یک  View  بر روی action راست کلیک کرده و گزینه  Add View را انتخاب میکنیم. View را نیز به صورت  Empty و بدون مدل ایجاد میکنیم. 

درون صفحه  View عنوانی را به صورت زیر در نظر میگیریم. 

پروژه را اجرا میکنیم و می توانیم ببینیم که صفحه  index  همراه با عنوان نمایش داده شده است. 

در نوار آدرس ، نام action را تغییر می دهیم. مثلا از  index به  index1 تغییر داده و صفحه را دوباره بارگذاری میکنیم. 

 

یک خطای سروری رخ می دهد که برای مدیریت این وضعیت یا خطاها به Override کردن متد مجازی با نام  HandleUnKnownAction نیاز است. 

درون کنترلر Home این متد را  Override  میکنیم. هر گاه یک  action  که در کنترلر موجود نیست فراخوانی شود این متد فراخوانی می شود. در این مثال ما به متد  index  هدایت می شویم. برای این کار از متد  redirectToAction برای هدایت شدن به action خاصی با استفاده از نام  action استفاده می شود. 

ExecuteResult  پردازش نتیجه یک متد  action را توسط یک نوع سفارشی که از کلاس action result ارث بری میکند فعال می سازد. 

اکنون پروژه را اجرا کرده و نام  action را از  index  به  index1 تغییر می دهیم.  پس از  debug کردن به متد  HandleUnknownAction خواهد رفت و در آخر به متد  index هدایت می شویم و View  آن به نمایش در می آید

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید