আমি এখনই এই প্রশ্নটি নিয়ে এসেছি এবং এখন এটি বেশ পুরানো হলেও এটি এখনও খুব প্রাসঙ্গিক। হাস্যকরভাবে, এই থ্রেডের একটি সঠিক মন্তব্য পোস্টটি লেখার সময় এমভিসিতে একটি স্ব-স্বীকৃত শিক্ষানবিস পোস্ট করেছিলেন। এমনকি এএসপি ডট নেটও পুরোপুরি সঠিক নয়। আমার একটি বড় প্রকল্প রয়েছে এবং আমি সাফল্যের সাথে অ্যাকশন পদ্ধতিগুলি ওভারলোড করি।
যদি কেউ সাধারণ {নিয়ামক} / {ক্রিয়া} / {আইডি} ডিফল্ট রুট প্যাটার্নের বাইরে রাউটিংটি বুঝতে পারে তবে এটি সম্ভবত স্পষ্ট হতে পারে যে কোনও অনন্য প্যাটার্ন ব্যবহার করে নিয়ামক পদক্ষেপগুলি ম্যাপ করা যায়। এখানে কেউ পলিমারফিজম সম্পর্কে কথা বলেছিলেন এবং বলেছেন: "এইচটিটিপি পলিমারফিজম বোঝে না", তবে রাউটিংয়ের এইচটিটিপি-র কোনও সম্পর্ক নেই। এটি, সহজভাবে বলা যায়, স্ট্রিং প্যাটার্ন মিলের জন্য একটি প্রক্রিয়া।
এই কাজটি করার সর্বোত্তম উপায় হ'ল রাউটিং বৈশিষ্ট্যগুলি ব্যবহার করা, উদাহরণস্বরূপ:
[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
}
}
এই ক্রিয়াগুলি url এর মতো যত্ন নেবে /cars/usa/new-york
এবং /cars/usa/texas/dallas
যা যথাক্রমে প্রথম এবং দ্বিতীয় সূচক ক্রিয়াকলাপগুলিতে ম্যাপ করবে।
এই উদাহরণস্বরূপ নিয়ন্ত্রকের পরীক্ষা করে দেখা যায় যে এটি উপরে বর্ণিত ডিফল্ট রুটের ধরণ ছাড়িয়ে গেছে beyond ডিফল্টটি ভাল কাজ করে যদি আপনার ইউআরএল কাঠামোটি আপনার কোড নামকরণের কনভেনশনগুলির সাথে হুবহু মিলে যায় তবে এটি সর্বদা ক্ষেত্রে হয় না। কোডটি ডোমেনের বর্ণনামূলক হওয়া উচিত তবে ইউআরএলগুলি প্রায়শই আরও এগিয়ে যেতে হয় কারণ তাদের বিষয়বস্তু অন্যান্য মাপদণ্ডের উপর ভিত্তি করে হওয়া উচিত যেমন এসইও প্রয়োজনীয়তা।
ডিফল্ট রাউটিং প্যাটার্নের সুবিধা হ'ল এটি স্বয়ংক্রিয়ভাবে অনন্য রুট তৈরি করে। এটি সংকলক দ্বারা কার্যকর করা হয়েছে যেহেতু ইউআরএলগুলি অনন্য নিয়ামক ধরণের এবং সদস্যদের সাথে মেলে। আপনার নিজস্ব রুট নিদর্শন ঘূর্ণায়মান স্বাতন্ত্র্যতা নিশ্চিত করতে এবং সেগুলি কাজ করে তা যত্ন সহকারে চিন্তাভাবনা প্রয়োজন।
গুরুত্বপূর্ণ দ্রষ্টব্য একটি ত্রুটিটি হ'ল ওভারলোড হওয়া ক্রিয়াকলাপগুলির জন্য url উত্পন্ন করার জন্য রাউটিং ব্যবহার করা কোনও ক্রমের নামের উপর ভিত্তি করে কাজ করে না, যেমন, UrlHelper.Action ব্যবহার করার সময়। যদি কেউ নামযুক্ত রুটগুলি ব্যবহার করে তবে এটি কাজ করে, এবং সম্মানিত উত্স অনুসারে নামযুক্ত রুটগুলি ব্যবহার করা হ'ল যেকোন উপায়ে যাওয়ার উপায় ( http://haacked.com/archive/2010/11/21/ নাম-routes-to-the- rescue.aspx/ )।
শুভকামনা!