ASP.NET MVC रूटिंग मॉड्यूल इनकमिंग ब्राउज़र रिक्वेस्ट्स को विशेष MVC कंट्रोलर एक्शन्स पर मैप करने के लिए जिम्मेदार होता है। जब ASP.NET MVC एप्लिकेशन लॉन्च होता है, तो एप्लिकेशन फ्रेमवर्क के रूट टेबल के साथ एक या अधिक पैटर्न रजिस्टर करता है ताकि रूटिंग इंजन को बताया जा सके कि उन पैटर्न्स से मेल खाने वाले किसी भी रिक्वेस्ट के साथ क्या करना है।
रूट कॉन्फिगरेशन
Global.asax फाइल वह हिस्सा है जहां हम अपने एप्लिकेशन के लिए रूट परिभाषित करते हैं।
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
डिफ़ॉल्ट रूट के तीन सेगमेंट्स
डिफ़ॉल्ट रूट के तीन सेगमेंट्स में Controller, Action, और Id होते हैं।

सेगमेंट विवरण:
| सेगमेंट | प्लेसहोल्डर | डिफ़ॉल्ट वैल्यू | विवरण |
|---|---|---|---|
| 1. Controller | {controller} | Home | हैंडल करने वाले कंट्रोलर क्लास का नाम (बिना "Controller" सफिक्स के) |
| 2. Action | {action} | Index | कंट्रोलर में आह्वान करने वाले एक्शन मेथड का नाम |
| 3. Id | {id} | वैकल्पिक (UrlParameter.Optional) | एक्शन मेथड को पास किया जाने वाला वैकल्पिक पैरामीटर |
URL पैटर्न विश्लेषण
URL Pattern: "{controller}/{action}/{id}"
// उदाहरण URLs और उनके मैपिंग:
/ → HomeController.Index() (डिफ़ॉल्ट्स उपयोग)
/Home → HomeController.Index() (डिफ़ॉल्ट एक्शन)
/Home/Index → HomeController.Index() (स्पष्ट)
/Home/About → HomeController.About()
/Product/Details/5 → ProductController.Details(5)
/Product/Edit/10 → ProductController.Edit(10)
/api/users → ApiController.Users() (अगर ApiController मौजूद है)
रूट घटक विस्तार से
रूट नाम (name)
एक रूट एक URL पैटर्न है जो एक हैंडलर पर मैप होता है। हैंडलर MVC एप्लिकेशन में एक कंट्रोलर हो सकता है जो रिक्वेस्ट प्रोसेस करता है। रूट नाम का उपयोग दिए गए रूट के विशिष्ट संदर्भ के रूप में किया जा सकता है (उदाहरण के लिए, URL जनरेशन के लिए)।
कंस्ट्रेंट्स (Constraints)
URL पैटर्न के विरुद्ध लागू करने के लिए कंस्ट्रेंट्स का एक सेट ताकि यह अधिक संकीर्ण रूप से परिभाषित कर सके कि यह किस URL से मेल खाता है।
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { id = @"\d+" } // id केवल अंक होना चाहिए
);
URL पैटर्न
एक URL पैटर्न में लिटरल वैल्यूज और वेरिएबल प्लेसहोल्डर्स हो सकते हैं। लिटरल्स और प्लेसहोल्डर्स URL के सेगमेंट्स में स्थित होते हैं जो स्लैश (/) कैरेक्टर द्वारा सीमांकित होते हैं।
डिफॉल्ट्स
जब हम एक रूट परिभाषित करते हैं, तो हम एक पैरामीटर के लिए डिफ़ॉल्ट वैल्यू असाइन कर सकते हैं। डिफॉल्ट्स एक ऑब्जेक्ट है जिसमें डिफ़ॉल्ट रूट वैल्यूज होती हैं।
डिफ़ॉल्ट्स के साथ व्यवहार
ऊपर के URL में, संबंधित कंट्रोलर और एक्शन से मिलान किया जाएगा। यदि हम URL में कंट्रोलर और एक्शन मेथड नहीं भेज रहे हैं, तो डिफ़ॉल्ट रूट के आधार पर संबंधित कंट्रोलर एक्शन मेथड इनवोक होगा।

एडवांस्ड रूटिंग उदाहरण
एरिया रूटिंग
routes.MapRoute(
name: "Admin",
url: "Admin/{controller}/{action}/{id}",
defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MyApp.Areas.Admin.Controllers" }
);
एट्रिब्यूट रूटिंग (आधुनिक दृष्टिकोण)
[RoutePrefix("api/products")]
public class ProductsController : ApiController
{
[Route("{id:int}")]
public IHttpActionResult Get(int id) { ... }
[Route("category/{categoryName}")]
public IHttpActionResult GetByCategory(string categoryName) { ... }
[Route("")]
public IHttpActionResult GetAll() { ... }
}
// WebApiConfig में
config.MapHttpAttributeRoutes();
कस्टम रूट कंस्ट्रेंट
public class CultureConstraint : IRouteConstraint
{
private readonly string[] _validCultures = { "en", "hi", "fr", "es" };
public bool Match(HttpContextBase httpContext, Route route, string parameterName,
RouteValueDictionary values, RouteDirection routeDirection)
{
var value = values[parameterName]?.ToString();
return _validCultures.Contains(value?.ToLower());
}
}
// उपयोग
routes.MapRoute(
name: "Localization",
url: "{culture}/{controller}/{action}/{id}",
defaults: new { culture = "en", controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { culture = new CultureConstraint() }
);
रूट डिबगिंग
// रूट टेबल देखें
var routeTable = RouteTable.Routes;
foreach (Route route in routeTable)
{
Console.WriteLine($"Name: {route?.Url}, Defaults: {route?.Defaults}");
}
// रूट डिबगर (NuGet: RouteDebugger)
// ऐप में /__routes जोड़कर सभी रूट्स देखें
सारांश: डिफ़ॉल्ट रूट {controller}/{action}/{id} तीन सेगमेंट्स के साथ एक कन्वेंशन-आधारित रूटिंग पैटर्न प्रदान करता है, जिसमें कंट्रोलर और एक्शन के लिए समझदार डिफॉल्ट्स होते हैं, जिससे कॉन्फिगरेशन के बिना सामान्य नेविगेशन काम करता है।