अद्यतन : यह कोडप्लेक्स पर पोस्ट किया गया है। पूर्ण स्रोत कोड और प्री-संकलित असेंबली डाउनलोड के लिए हैं। मेरे पास अभी तक साइट पर प्रलेखन पोस्ट करने का समय नहीं है, इसलिए इस एसओ पोस्ट को अभी के लिए सहना होगा।
अद्यतन : मैंने 1) रूट ऑर्डरिंग, 2) रूट पैरामीटर बाधाओं, और 3) रूट पैरामीटर डिफ़ॉल्ट मानों को संभालने के लिए कुछ नई विशेषताओं को जोड़ा। नीचे दिया गया पाठ इस अद्यतन को दर्शाता है।
मैंने वास्तव में अपने एमवीसी प्रोजेक्ट्स के लिए कुछ ऐसा किया है (मुझे नहीं पता कि जेफ स्टैकओवरफ्लो के साथ कैसा कर रहा है)। मैंने कस्टम विशेषताओं का एक सेट परिभाषित किया: UrlRoute, UrlRouteParameterConstraint, UrlRouteParameterDefault। वे MVC कंट्रोलर एक्शन मेथड्स में अटैच किए जा सकते हैं ताकि रूट, अड़चनें और डिफॉल्ट उनके लिए खुद ही बाध्य हो जाएं।
उदाहरण का उपयोग:
(ध्यान दें कि यह उदाहरण कुछ आकस्मिक है लेकिन यह सुविधा प्रदर्शित करता है)
public class UsersController : Controller
{
[UrlRoute(Path = "users")]
public ActionResult Index()
{
return View();
}
[UrlRoute(Path = "users/{userId}")]
[UrlRouteParameterConstraint(Name = "userId", Regex = @"\d+")]
public ActionResult UserProfile(int userId)
{
return View();
}
[UrlRoute(Path = "users/admin", Order = -10)]
public ActionResult AdminProfile()
{
return View();
}
[UrlRoute(Path = "users/{userId}/posts/{dateRange}")]
[UrlRouteParameterConstraint(Name = "userId", Regex = @"\d+")]
[UrlRouteParameterDefault(Name = "dateRange", Value = "all")]
public ActionResult UserPostsByTag(int userId, string dateRange)
{
return View();
}
UrlRouteAttribute की परिभाषा:
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class UrlRouteAttribute : Attribute
{
public string Name { get; set; }
public string Path { get; set; }
public int Order { get; set; }
}
UrlRouteParameterConstraintAttribute की परिभाषा:
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class UrlRouteParameterConstraintAttribute : Attribute
{
public string Name { get; set; }
public string Regex { get; set; }
}
UrlRouteParameterDefaultAttribute की परिभाषा:
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class UrlRouteParameterDefaultAttribute : Attribute
{
public string Name { get; set; }
public object Value { get; set; }
}
Global.asax.cs में परिवर्तन:
RouteUtility.RegisterUrlRoutesFromAttribution फ़ंक्शन के लिए एकल कॉल के साथ, कॉल मैप्स मैपआउट में बदलें:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteUtility.RegisterUrlRoutesFromAttributes(routes);
}
रूट यूटिलिटी की परिभाषा।
पूरा स्रोत कोडप्लेक्स पर है । यदि आपके पास कोई प्रतिक्रिया या बग रिपोर्ट है तो कृपया साइट पर जाएं।