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

یکشنبه 4 بهمن 1394

در این مقاله می خواهیم در مورد نادیده گرفتن 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 به این منظور است که شما صفحه ی مورد نظر را پیدا نکرده است.

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

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

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

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

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