2010-02-26 11 views
8

मुझे लगता है कि कुछ बाधाओं में से एक हाल ही में कुछ एमवीसी आधारित अनुप्रयोगों के विकास के लिए कुछ अधिक जटिल रूटिंग आवश्यकताओं के आसपास अपना सिर प्राप्त कर रहा है। मुझे पूर्ण समझ प्राप्त करने के लिए मुझे इसके माध्यम से चलने के लिए ट्यूटोरियल्स के सही सेट को खोजने में समस्याएं आ रही हैं।उन्नत एएसपी रूटिंग ट्यूटोरियल और उदाहरण

जो मैं खोजना चाहता हूं वह बुनियादी (नियंत्रक/क्रिया/आईडी) से उन्नत तक की सभी चीज़ों के लिए ट्यूटोरियल का एक पूरा सेट है।

क्या मैं उन्नत रूटिंग फोन कर रहा हूँ का एक उदाहरण तरह बातें है:

/blog/year/month/day/title - नियंत्रक करने के लिए नक्शे होगा: blog और कार्रवाई: post और पैरामीटर के रूप में: year, month, day और title

/blog/title - नियंत्रक के लिए मानचित्र होगा: blog और कार्रवाई: post और पैरामीटर के रूप में: title

/title - नियंत्रक करने के लिए नक्शे होगा: blog और कार्रवाई: post और पैरामीटर के रूप में: title

मैं एक डेटाबेस का उपयोग वैश्विक में स्पष्ट मार्ग के लिए प्रत्येक संभव सेट मैप कर सकते हैं, लेकिन यह है कि यह मार्ग इंजन होने की बात को हराने है लगता है सही जगह पर मार्ग। मैं एक बार नियम को परिभाषित करना चाहता हूं।

उत्तर

15

मुझे समझ में नहीं आ रहा है, आवश्यकता होने पर नियमित अभिव्यक्ति का उपयोग करके आप उनमें से प्रत्येक को एक अलग मार्ग के रूप में क्यों परिभाषित नहीं कर सकते हैं। उदाहरण के लिए /blog/year/month/day/title और /blog/title के बीच अंतर करने के लिए।

उन सेटों में से प्रत्येक एक अलग मामला है, और आपको एमवीसी को प्रत्येक के साथ क्या करना है, यह बताना होगा।

पहले मामले के लिए:: /blog/year/month/day/title

routes.MapRoute(
    "Blog Full Route", // Route name 
    "blog/{year}/{month}/{day}/{title}", // URL with parameters 
    new {controller = "blog", action = "post"}, // Defaults 
    new {year = @"\d+", month= @"\d+", day = @"\d+"} // Constrain parameters with RegEx patterns 
    ); 

दूसरे मामले के लिए: /blog/title

routes.MapRoute(
    "Blog Title Route", // Route name 
    "blog/{title}", // URL with parameters 
    new {controller = "blog", action = "post"}, // Defaults 
    ); 

पिछले मामले के लिए: /title

routes.MapRoute(
    "Title Route", // Route name 
    "{title}", // URL with parameters 
    new {controller = "blog", action = "post"}, // Defaults 
    ); 
आप Global.asax.cs फ़ाइल में defining the rule once करके ऐसा कर सकते

यह चाल नीचे के कम से कम विशिष्ट के साथ, इस सटीक क्रम में थीस मार्गों को डाल रही है। आदेश बदलने से गलत मार्ग का उपयोग किया जाएगा (विशेष रूप से पिछले दो में)। यदि अंतिम मामला दूसरे मामले के साथ स्विच किया गया था, तो blog/SomeTitle के यूआरएल पर blog शीर्षक के साथ कार्रवाई करेंगे।

जब भी आप कुछ के लिए एक मार्ग बना रहे हैं, निम्न बातों का ध्यान रखें:

  1. RegEx के साथ बाधा मार्ग मापदंडों
  2. very मार्ग आदेश के प्रति सचेत रहें (जो मार्ग आता है जो पहले)
  3. : तरंगित कोष्ठकों {something} निरूपित कार्रवाई

कुछ अच्छी ट्यूटोरियल पैरामीटर

+0

अच्छा विवरण और लिंक, धन्यवाद। – Kieron

+0

शानदार जवाब। –

संबंधित मुद्दे