Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# ASP.NET MVC में डिफ़ॉल्ट रूट के तीन सेगमेंट्स क्या हैं?

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 होते हैं।

C# ASP.NET MVC में डिफ़ॉल्ट रूट के तीन सेगमेंट्स क्या हैं?

सेगमेंट विवरण:

सेगमेंटप्लेसहोल्डरडिफ़ॉल्ट वैल्यूविवरण
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 में कंट्रोलर और एक्शन मेथड नहीं भेज रहे हैं, तो डिफ़ॉल्ट रूट के आधार पर संबंधित कंट्रोलर एक्शन मेथड इनवोक होगा।

C# ASP.NET MVC में डिफ़ॉल्ट रूट के तीन सेगमेंट्स क्या हैं?

एडवांस्ड रूटिंग उदाहरण

एरिया रूटिंग

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} तीन सेगमेंट्स के साथ एक कन्वेंशन-आधारित रूटिंग पैटर्न प्रदान करता है, जिसमें कंट्रोलर और एक्शन के लिए समझदार डिफॉल्ट्स होते हैं, जिससे कॉन्फिगरेशन के बिना सामान्य नेविगेशन काम करता है।

  1. C# ASP.NET WebAPI में बिल्ट-इन मैसेज हैंडलर्स क्या हैं? C# ASP.NET WebAPI में बिल्ट-इन मैसेज हैंडलर्स क्या हैं?

    एक मैसेज हैंडलर एक क्लास है जो HTTP रिक्वेस्ट प्राप्त करती है और HTTP रिस्पॉन्स लौटाती है। मैसेज हैंडलर्स एब्स्ट्रैक्ट HttpMessageHandler क्लास से डेराइव होते हैं। मैसेज हैंडलर्स हमें HttpControllerDispatcher तक पहुंचने से पहले इनकमिंग रिक्वेस्ट को प्रोसेस, एडिट, या अस्वीकार करने का अवसर प्रदान करते

  1. C# ASP.NET WebAPI में फिल्टर्स के विभिन्न प्रकार क्या हैं? C# ASP.NET WebAPI में फिल्टर्स के विभिन्न प्रकार क्या हैं?

    फिल्टर्स का उपयोग WebAPI फ्रेमवर्क रिक्वेस्ट प्रोसेसिंग के विभिन्न स्तरों पर अतिरिक्त लॉजिक इंजेक्ट करने के लिए किया जाता है। फिल्टर्स क्रॉस-कटिंग कंसर्न (लॉगिंग, ऑथराइज़ेशन, और कैशिंग) के लिए एक तरीका प्रदान करते हैं। फिल्टर्स को एक्शन मेथड या कंट्रोलर पर घोषणात्मक या प्रोग्रामेटिक तरीके से लागू कि

  1. C# ASP.NET WebAPI में कंट्रोलर एक्शन के विभिन्न रिटर्न टाइप्स क्या हैं? C# ASP.NET WebAPI में कंट्रोलर एक्शन के विभिन्न रिटर्न टाइप्स क्या हैं?

    Web API एक्शन मेथड के निम्नलिखित रिटर्न टाइप्स हो सकते हैं। Void Primitive Type/Complex Type HttpResponseMessage IHttpActionResult 1. Void यह आवश्यक नहीं है कि सभी एक्शन मेथड्स कुछ न कुछ लौटाएं। इनका रिटर्न टाइप void हो सकता है। उदाहरण using DemoWebApplication.Models; using Syst