ASP.NET MVC রাউটিং মডিউল ইনকামিং ব্রাউজার রিকোয়েস্টকে নির্দিষ্ট MVC কন্ট্রোলার অ্যাকশনের সাথে ম্যাপ করার জন্য দায়বদ্ধ। ASP.NET MVC অ্যাপ্লিকেশন লঞ্চ হলে অ্যাপ্লিকেশন ফ্রেমওয়ার্কের রুট টেবিলের সাথে এক বা একাধিক প্যাটার্ন রেজিস্টার করে যাতে রাউটিং ইঞ্জিনকে বোঝায় যে সেই প্যাটার্নের সাথে ম্যাচ করা রিকোয়েস্টগুলো কীভাবে হ্যান্ডেল করবে। রানটাইমে রাউটিং ইঞ্জিন একটি রিকোয়েস্ট পেলে, সেটি রিকোয়েস্টের URL কে রেজিস্টার করা URL প্যাটার্নের সাথে মিলিয়ে এবং প্যাটার্ন ম্যাচ অনুযায়ী রেসপন্স দেয়।
ASP.NET প্রতিটি URL কে একটি ফিজিক্যাল ফাইলের সাথে ম্যাপ করার প্রয়োজনীয়তা দূর করতে রাউটিং চালু করল। রাউটিং আমাদের একটি URL প্যাটার্ন ডিফাইন করতে দেয় যা রিকোয়েস্ট হ্যান্ডলারের সাথে ম্যাপ করে। System.Web.Routing MVC ফ্রেমওয়ার্ক ব্যবহার করে, কিন্তু এটি ASP.NET Dynamic Data-ও ব্যবহার করে। MVC ফ্রেমওয়ার্ক রিকোয়েস্টকে একটি কন্ট্রোলারের দিকে নির্দেশ করতে রাউটিং-এর সুবিধা নেয়। Global.asax ফাইল আমাদের অ্যাপ্লিকেশনের সে অংশ যেখানে আমরা অ্যাপ্লিকেশনের জন্য রুট ডিফাইন করব।
নিচে একটি MVC অ্যাপ্লিকেশনের রুট কনফিগারেশন দেওয়া হলো:
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 }
);
}
}
রুট নাম
একটি রুট হলো একটি URL প্যাটার্ন যা একটি হ্যান্ডলারের সাথে ম্যাপ করা থাকে। হ্যান্ডলার MVC অ্যাপ্লিকেশনে একটি কন্ট্রোলার হতে পারে যা রিকোয়েস্ট প্রসেস করে। একটি রুট নাম একটি নির্দিষ্ট রুটের জন্য নির্দিষ্ট রেফারেন্স হিসেবে ব্যবহার করা যেতে পারে।
কনস্ট্রেইন্টস
URL প্যাটার্নের বিরুদ্ধে প্রয়োগ করার জন্য কনস্ট্রেইন্টসের একটি সেট যা URL-কে আরও নির্দিষ্টভাবে সংজ্ঞায়িত করে।
URL প্যাটার্ন
একটি URL প্যাটার্নে লিটারেল ভ্যালু এবং ভেরিয়েবল প্লেসহোল্ডার থাকতে পারে। লিটারেল এবং প্লেসহোল্ডার URL-এর সেগমেন্টে অবস্থান করে যা স্ল্যাশ (/) ক্যারেক্টার দ্বারা डিলিমিটেড।
যখন একটি রিকোয়েস্ট করা হয়, URL পার্স হয় সেগমেন্ট এবং প্লেসহোল্ডারে, এবং ভেরিয়েবল ভ্যালুগুলো রিকোয়েস্ট হ্যান্ডলারের কাছে প্রদান করা হয়। এই প্রক্রিয়া কোয়েরি স্ট্রিং-এ ডেটা পার্স হয় এবং রিকোয়েস্ট হ্যান্ডলারের কাছে পাস হয় তার সাথে অনুরূপ। দুটি কেসেই ভেরিয়েবল ইনফরমেশন URL-এ থাকে এবং কী-ভ্যালু পেয়ার হিসেবে হ্যান্ডলারের কাছে পাস হয়। কোয়েরি স্ট্রিং-এ কী এবং ভ্যালু দুটোই URL-এ থাকে। রুটের জন্য, কীগুলো URL প্যাটার্নে ডিফাইন করা প্লেসহোল্ডার নাম, এবং শুধু ভ্যালুগুলো URL-এ থাকে।
ডিফল্টস
যখন আমরা একটি রুট ডিফাইন করি, আমরা একটি প্যারামিটারের জন্য ডিফল্ট ভ্যালু অ্যাসাইন করতে পারি। ডিফল্টস হলো একটি অবজেক্ট যাতে ডিফল্ট রুট ভ্যালু থাকে। একটি ডিফল্ট রুটের তিনটি সেগমেন্ট হলো Controller, Action এবং Id।
উপরের URL-এ, সংশ্লিষ্ট কন্ট্রোলার এবং অ্যাকশন ম্যাচ হবে। যদি আমরা URL-এ কন্ট্রোলার এবং অ্যাকশন মেথড না পাঠাই এবং ডিফল্ট রুটের ভিত্তিতে সংশ্লিষ্ট কন্ট্রোলার অ্যাকশন মেথড আহ্বান করা হবে।