এমভিসি 5 এ অ্যাট্রিবিউট রাউটিং
এমভিসি 5 এর আগে আপনি routes.MapRoute(...)
রাউটকনফিগ.সি.সি. ফাইলগুলিতে কল করে নির্দিষ্ট ক্রিয়া এবং নিয়ন্ত্রকদের URL গুলি ম্যাপ করতে পারেন map হোমপেজের জন্য ইউআরএল সংরক্ষণ করা হয় এটি এখানে ( Home/Index
)। তবে আপনি যদি নীচের মত দেখাচ্ছে ডিফল্ট রুট পরিবর্তন করেন,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
মনে রাখবেন যে এটি অন্যান্য ক্রিয়া এবং নিয়ামকগুলির URL গুলিকে প্রভাবিত করবে। উদাহরণস্বরূপ, যদি আপনার নামে একটি কন্ট্রোলার ক্লাস নামে থাকে ExampleController
এবং এর অভ্যন্তরে কোনও অ্যাকশন পদ্ধতির নামকরণ করা হয় DoSomething
, তবে পূর্বনির্ধারিত ডিফল্ট url ExampleController/DoSomething
আর কাজ করবে না কারণ ডিফল্ট রুট পরিবর্তিত হয়েছিল।
এর জন্য একটি কার্যপ্রণালী হ'ল ডিফল্ট রুটের সাথে গোলযোগ না করা এবং এই জাতীয় ক্রিয়াকলাপ এবং এর মতো নিয়ন্ত্রণকারীদের জন্য রুটকনফিগ.সি.এস. ফাইলটিতে নতুন রুট তৈরি করা,
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
ইউআরএলকে ম্যাপ করা হবে hey/now
। আপনি যখন বিভিন্ন ক্রিয়াকলাপের জন্য রুটগুলি নির্ধারণ করতে চান তবে প্রতিবারের জন্য এটি করা ক্লান্তিকর হতে পারে। এমভিসি 5 এ এখন আপনি এই জাতীয় ক্রিয়ায় url- এর সাথে মিলের জন্য বৈশিষ্ট্যগুলি যুক্ত করতে পারেন,
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();
}
}