मैं कुछ वृद्धि के साथ this question के समान कुछ हासिल करना चाहता हूं।एएसपी.नेट रूटिंग के साथ पेड़-संरचित यूआरएल कैसे रूट करें?
एक एएसपी.नेट एमवीसी वेब एप्लिकेशन है।
मेरे पास इकाइयों का एक पेड़ है।
उदाहरण के लिए, Page
कक्षा जिसमें बच्चों नामक एक संपत्ति है, जो IList<Page>
प्रकार है। (Page
वर्ग का एक उदाहरण डेटाबेस में एक पंक्ति से मेल खाता है।)
ध्यान दें कि साइट के मालिक किसी भी समय एक नया पृष्ठ जोड़ सकते हैं, या मौजूदा को हटा सकते हैं, और यूआरएल को उन परिवर्तनों को भी प्रतिबिंबित करना चाहिए।
मैं डेटाबेस में प्रत्येक Page
पर एक अद्वितीय यूआरएल असाइन करना चाहता हूं।
मैं Page
ऑब्जेक्ट्स को PageController
नामक नियंत्रक के साथ संभालता हूं।
उदाहरण URL:
http://mysite.com/Page1/
http://mysite.com/Page1/SubPage/
http://mysite.com/Page/ChildPage/GrandChildPage/
आप चित्र प्राप्त।
तो, मैं प्रत्येक Page
ऑब्जेक्ट को अपना स्वयं का यूआरएल रखना चाहता हूं जो उसके माता-पिता के यूआरएल के बराबर है और इसका अपना नाम है।
इसके अतिरिक्त, मैं Page
को /
(रूट) URL पर मैप करने की क्षमता भी चाहूंगा।
मैं इन नियमों आवेदन करना चाहते हैं:
- एक URL किसी अन्य मार्ग से संभाला जा सकता है, तो या एक फ़ाइल निर्दिष्ट URL में फाइल सिस्टम में मौजूद है, सामान्य URL मानचित्रण हो जाने
- एक यूआरएल आभासी पथ प्रदाता द्वारा नियंत्रित किया जा सकता है, तो, अगर कोई अन्य है कि इसे संभाल
- जाने
PageController
वर्ग
मुझे this question, और also this one और this one भी मिला, लेकिन वे बहुत मदद नहीं कर रहे थे, क्योंकि वे मेरे पहले दो बिंदुओं के बारे में स्पष्टीकरण नहीं देते हैं।
मैं निम्नलिखित संभव soutions देखें:
- प्रत्येक पृष्ठ के लिए मानचित्र एक मार्ग invidually।
एप्लिकेशन के शुरू होने पर मुझे पूरे पेड़ पर जाने की आवश्यकता होती है, और मार्ग तालिका के अंत में एक सटीक मिलान मार्ग जोड़ना पड़ता है। - मैं
{*path}
के साथ एक मार्ग जोड़ सकता हूं और एक कस्टमIRouteHandler
लिखता हूं जो इसे संभालता है, लेकिन मैं नहीं देख सकता कि मैं पहले दो नियमों से कैसे निपट सकता हूं, क्योंकि इस हैंडलर को सबकुछ संभालना होगा।
अब तक, पहला समाधान सही लगता है, क्योंकि यह भी सबसे आसान है। लेकिन फिर भी, उस मामले में भी मुझे यकीन नहीं है कि मैं अनुरोधों को संभालने के लिए PageController
कैसे बना सकता हूं।
मैं इस पर आपके विचारों की वास्तव में सराहना करता हूं।
अग्रिम धन्यवाद!
संपादित करें: अब मेरे पास प्राप्त हर उत्तर के हर पहलू की जांच करने का समय था। मैंने नील के जवाब को स्वीकार किया, क्योंकि वह एक चीज कैसे काम करता है इस बारे में सबसे अच्छा स्पष्टीकरण प्रदान करता है। मैंने अन्य सभी उत्तरों को भी उखाड़ फेंक दिया, क्योंकि वे अच्छे विचार प्रदान करते हैं।
मैं मौजूदा फाइलों के लिए मार्ग क्यों और कैसे जोड़ूं? इसके अलावा, मैं पेड़ के लिए मार्ग कैसे बनाऊंगा और उन्हें उचित नियंत्रक के पास निर्देशित करूंगा? – Venemo
आपको इसकी आवश्यकता नहीं है; डिफ़ॉल्ट रूप से रूटिंग सिस्टम एक मौजूदा फ़ाइल की जांच करेगा और उस नियंत्रक और क्रिया को ढूंढने की कोशिश करने के लिए उस परोसने का पक्ष लेगा। – Paul
@ पॉल - धन्यवाद। क्या यह आभासी पथ प्रदाता द्वारा प्रदान की गई फ़ाइलों पर भी लागू होता है? – Venemo