نادیده گرفتن Route در Mvc

در این مقاله می خواهیم در مورد نادیده گرفتن route در mvc صحبت نماییم، اینکه اگر شما چند controller داشته باشید و بخواهید یکی از آن ها نادیده گرفته شود چگونه خواهد بود.برای درک بهتر موضوع مقاله ی زیر را مطالعه نمایید.

نادیده گرفتن Route در Mvc

در بعضی از پروژه های خود شما از تعداد زیادی controller استفاده می نمایید، و این که به کدام controller نیاز داشته باشید یک مساله خواهد بود، تا اینکه راه حلی ارائه شده که این راه حل ارسال و درخواست یک فرآیند را می تواند نادیده بگیرید.

در این مقاله ما دو controller داریم یکی Employee و دیگری Student حالا ما نیاز داریم که Employee صدا زده شود پس باید از متد RegisterRoutes در Routeconfig کد زیر را اضافه نمایید.

routes.IgnoreRoute("Employee/");

یک پروژه ی جدید از نوع MVC ایجاد نمایید به صورت زیر:

حالا یک controller جدید ایجاد نمایید:

یک controller خالی به نام student ایجاد نمایید:

کد controller به صورت زیر خواهد بود:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Web.Mvc;  
  
namespace IngoreRoute.Controllers   
{  
    public class StudentController: Controller   
    {  
        // GET: Student  
        public ActionResult Index()   
        {  
            return View();  
        }  
    }  
}

روی متد Index کلیک راست نمایید و یک View ایجاد کنید به صورت زیر:

داخل صفحه ی Index فقط یک Header قرار دهید به صورت زیر:


@{
    ViewBag.Title = "Index";
}

<h2>Student Controller</h2>

مثل مراحل بالا یک Controller دیگر ایجاد نمایید نام آن را Employee بگذارید:

قبل از اجرای برنامه ما نیاز داریم که controller و action مورد استفاده را درRouteconfig.cs اضافه نماییم.

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Student", action = "Index", id = UrlParameter.Optional }
            );

برنامه را اجرا بگیرید به صورت زیر است:

زمانی که در آدرس Employee را بنویسید به صورت زیر خواهد بود:

در بالا ما به راحتی به Employee دسترسی پیدا کردیم حالا می خواهیم اینگونه نباشد و به راحتی به Controller Employee دسترسی پیدا نکنیم پس باید در Routeconfig.cs کد زیر را بنویسید:

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("Employee/");  

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Student", action = "Index", id = UrlParameter.Optional }
            );

زمانی که برنامه را اجرا بگیرید به صورت زیر خواهد بود:

زمانی که در Url نام controller خود را بنویسید خطای 404 خواهد داد.

خطای 404 به این منظور است که شما صفحه ی مورد نظر را پیدا نکرده است.

فایل های ضمیمه
دانلود نسخه ی PDF این مطلب