2010-07-01 17 views
22

मैं एक वेब में इस कोड के साथ काम कर रहा हूँ फॉर्म्स परिदृश्य:क्या कोई मुझे एएसपीनेट रूटिंग सिंटैक्स समझा सकता है?

public static void RegisterRoutes(RouteCollection routes) 
    { 

    Route r = new Route("{*url}", new MyRouteHandler()); 
    routes.Add(r); 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute("{resource}.gif/{*pathInfo}"); 

    } 

सबसे पहले, किसी को भी मुझे बता सकते हैं जहां {pathInfo *} के defintion है? http://msdn.microsoft.com/en-us/library/cc668201.aspx#url_patterns वास्तव में इसे परिभाषित नहीं करता है। करता है:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

मैच

जबकि

routes.IgnoreRoute("{resource}.axd"); 

केवल मेल खाता

/xyz.axd 

दूसरे, में:

{*url} 

* मतलब क्या है? और पूरी तरह से अभिव्यक्ति क्या मतलब है। क्या कहीं कहीं यह स्पष्ट रूप से समझाया गया है?

तीसरे, वहाँ एक विशेष क्रम मैं इन भाव सही ढंग से मार्गों की अनदेखी करने के जोड़ने की जरूरत है? मैं जानता हूँ कि {* url} मोहक किसी तरह का है, IgnoreRoutes पहले आते हैं या इसे जैसे

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.IgnoreRoute("{resource}.gif/{*pathInfo}"); 
Route r = new Route("{*url}", new MyRouteHandler()); 
routes.Add(r); 

उत्तर

2

pathinfo सिर्फ एक बाल्टी के लिए एक लेबल है के बाद करना चाहिए। तो उदाहरण के लिए * pathinfo कहते हैं कि {resource} .axd/pathinfo में सब कुछ डालें।

जिन मार्गों पर मार्गों तालिका में रख दें क्रम में क्रियान्वित कर रहे हैं, इसलिए यदि आपके पहले ही मार्ग कैच सभी बाकी पर अमल कभी नहीं होगा है।

+0

क्या मेरे ऊपर pathInfo का उदाहरण सही है? यदि नहीं, तो क्या आप इसे फिर से कर सकते हैं ताकि यह सही हो। मैं अभी भी उलझन में हूँ। – Petras

+0

आपके उदाहरण ठीक दिखते हैं, शायद आप एक ऐसा मार्ग पोस्ट कर सकते हैं जो काम नहीं कर रहा है, तो मैं उस पर टिप्पणी कर सकता हूं। – bleevo

21

मेरे 2 सेंट: एक मार्ग regex नहीं है। यह केवल परिवर्तनीय और स्थिर घटक हैं जो एक मार्ग बनाते हैं, खंडों से अलग होते हैं (स्लैश द्वारा पहचाना जाता है)। एक विशेष प्रतीक है, अंतिम चर में तारांकन, जिसका अर्थ यहां से है, सेगमेंट-सेपरेटर को अनदेखा करें - स्लैश। तो,

{*url} 

क्योंकि इसका मतलब पूरे यूआरएल ले, यह चर 'url' में डाल दिया, और कहा कि मार्ग के साथ जुड़े पृष्ठ पर कि गुजरती हैं, सबसे सरल मार्ग है।

{controller}/{action}/{id} 

प्रथम खंड में सब कुछ होता है - पहले स्लैश तक - चर 'नियंत्रक' में, के बीच पहले और दूसरे/सब कुछ कहते हैं चर में दूसरे और के बीच 'कार्रवाई', और सब कुछ परिवर्तनीय 'आईडी' में तीसरा स्लैश (या अंत)। उन चर को तब संबंधित पृष्ठ में पास कर दिया जाता है।

{resource}.axd/{*pathInfo} 

यहाँ, जानकारी डाल से पहले .axd/'संसाधन' में (और यह किसी भी स्लैश! नहीं हो सकता है), और बाद पहले/'pathInfo' में सब कुछ डाल दिया। चूंकि यह आम तौर पर एक अनदेखा मार्ग है, इसलिए इसे संबंधित पृष्ठ पर पास करने के बजाय, इसे स्टॉपहैंडलर द्वारा नियंत्रित किया जाता है, जिसका अर्थ है कि रूटिंग इसके साथ सौदा नहीं करेगी, और इसे गैर-रूटिंग एचटीपीएचंडलर द्वारा संभाला जाएगा।

जैसा कि ब्लीवो कहते हैं, मार्गों को संग्रह में जोड़ा जाता है ताकि क्रम में उन्हें जोड़ा जा सके। इसलिए सामान्य मार्ग को संभालने से पहले IgnoreRoute को जोड़ना होगा।http://msdn.microsoft.com/en-us/library/cc668201.aspx

अपने उदाहरण के लिए विशिष्ट है, मैं, अपने मार्ग अलावा ऊपर IgnoreRoute लाइनें डाल होगा क्योंकि अपने मार्ग को प्रभावी ढंग से एक कैच-ऑल है:

यहाँ घोड़े के मुंह है। साथ ही, याद रखें कि gif अनदेखा केवल तभी सम्मानित किया जाएगा यदि gif रूट निर्देशिका में है।

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