MVC 5 में रूटिंग की विशेषता
एमवीसी 5 से पहले आप routes.MapRoute(...)
रूटकॉन्फिग.क्स फ़ाइल में कॉल करके विशिष्ट कार्यों और नियंत्रकों के लिए URL मैप कर सकते हैं । यह वह जगह है जहां मुखपृष्ठ के लिए यूआरएल संग्रहीत है ( Home/Index
)। हालाँकि यदि आप नीचे दिखाए अनुसार डिफ़ॉल्ट मार्ग को संशोधित करते हैं,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
ध्यान रखें कि यह अन्य क्रियाओं और नियंत्रकों के URL को प्रभावित करेगा। उदाहरण के लिए, यदि आपके पास एक नियंत्रक वर्ग का नाम है ExampleController
और इसके अंदर एक क्रिया विधि है DoSomething
, तो अपेक्षित डिफ़ॉल्ट यूआरएल ExampleController/DoSomething
अब काम नहीं करेगा क्योंकि डिफ़ॉल्ट मार्ग बदल गया था।
इसके लिए वर्कअराउंड डिफ़ॉल्ट मार्ग के साथ खिलवाड़ नहीं करना है और अन्य कार्यों और नियंत्रकों के लिए RouteConfig.cs फ़ाइल में नए मार्ग बनाना है,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Example",
url: "hey/now",
defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional }
);
अब क्लास की DoSomething
कार्रवाई ExampleController
को url में मैप किया जाएगा hey/now
। लेकिन यह हर बार जब आप विभिन्न कार्यों के लिए मार्गों को परिभाषित करना चाहते हैं, तो थकाऊ हो सकते हैं। तो एमवीसी 5 में अब आप एक्शन से मैच करने के लिए विशेषताओं को जोड़ सकते हैं जैसे कि,
public class HomeController : Controller
{
// url is now 'index/' instead of 'home/index'
[Route("index")]
public ActionResult Index()
{
return View();
}
// url is now 'create/new' instead of 'home/create'
[Route("create/new")]
public ActionResult Create()
{
return View();
}
}