मैं अभी इस प्रश्न पर आया हूं और भले ही यह अभी काफी पुराना है, फिर भी यह बहुत प्रासंगिक है। विडंबना यह है कि इस धागे में एक सही टिप्पणी एमवीसी में एक स्व-परिचित शुरुआत द्वारा पोस्ट की गई थी जब उसने पोस्ट लिखा था। यहां तक कि ASP.NET डॉक्स पूरी तरह से सही नहीं हैं। मेरे पास एक बड़ी परियोजना है और मैं सफलतापूर्वक एक्शन विधियों को अधिभारित करता हूं।
यदि कोई साधारण {कंट्रोलर} / {एक्शन} / {आईडी} डिफॉल्ट रूट पैटर्न से परे रूटिंग को समझता है, तो यह स्पष्ट हो सकता है कि किसी भी यूनिक पैटर्न का उपयोग करके कंट्रोलर एक्शन को मैप किया जा सकता है। यहाँ किसी ने बहुरूपता के बारे में बात की और कहा: "HTTP बहुरूपता को नहीं समझता है", लेकिन रूटिंग का HTTP से कोई लेना-देना नहीं है। यह, बस रखा है, स्ट्रिंग पैटर्न मिलान के लिए एक तंत्र।
इस कार्य को करने का सबसे अच्छा तरीका राउटिंग विशेषताओं का उपयोग करना है, उदाहरण के लिए:
[RoutePrefix("cars/{country:length(3)}")]
public class CarHireController
{
[Route("{location}/{page:int=1}", Name = "CarHireLocation")]
public ActionResult Index(string country, string location, int page)
{
return Index(country, location, null, page);
}
[Route("{location}/{subLocation}/{page:int=1}", Name = "CarHireSubLocation")]
public ActionResult Index(string country, string location, string subLocation, int page)
{
//The main work goes here
}
}
ये क्रियाएँ जैसे /cars/usa/new-york
और उरलों की देखभाल करेंगी/cars/usa/texas/dallas
जाएगा, जो क्रमशः पहली और दूसरी अनुक्रमणिका क्रियाओं का मानचित्रण करेंगे।
इस उदाहरण नियंत्रक की जांच से यह स्पष्ट होता है कि यह ऊपर बताए गए डिफ़ॉल्ट मार्ग पैटर्न से परे है। यदि आपका url संरचना आपके कोड नामकरण सम्मेलनों से बिल्कुल मेल खाता है, तो डिफ़ॉल्ट रूप से अच्छी तरह से काम करता है, लेकिन यह हमेशा ऐसा नहीं होता है। कोड डोमेन का वर्णनात्मक होना चाहिए, लेकिन यूआरएल को अक्सर आगे जाने की आवश्यकता होती है क्योंकि उनकी सामग्री अन्य मानदंडों पर आधारित होनी चाहिए, जैसे कि एसईओ आवश्यकताएं।
डिफ़ॉल्ट रूटिंग पैटर्न का लाभ यह है कि यह स्वचालित रूप से अद्वितीय मार्ग बनाता है। यह कंपाइलर द्वारा लागू किया जाता है क्योंकि यूआरएल अद्वितीय नियंत्रक प्रकारों और सदस्यों से मेल खाएगा। अपने स्वयं के मार्ग पैटर्न को रोल करने के लिए विशिष्टता को सुनिश्चित करने के लिए सावधानीपूर्वक विचार की आवश्यकता होगी और वे काम करते हैं।
महत्वपूर्ण नोट एक दोष यह है कि ओवरलोड क्रियाओं के लिए url उत्पन्न करने के लिए रूटिंग का उपयोग करना उरहेल्पर.एक्शन का उपयोग करते समय किसी एक्शन नाम के आधार पर काम नहीं करता है। लेकिन यह काम करता है अगर कोई नामित मार्गों का उपयोग करता है, जैसे, UrlHelper.RouteUrl। और नामित मार्गों का उपयोग करना, अच्छी तरह से सम्मानित स्रोतों के अनुसार, किसी भी तरह से जाने का रास्ता है ( http://haacked.com/archive/2010/11/21/onym-routes-to-the-rescue.aspx/ )।
सौभाग्य!