2010-08-18 5 views
5

मुझे कई उप निर्देशिकाओं के साथ रूट करने के लिए फ़ाइल हैंडलर सेट करने की आवश्यकता है जैसे कि tihs;बहु-उप-निर्देशिकाओं के साथ फ़ाइलों के लिए एएसपी.नेट एमवीसी रूटिंग

http://localhost/images/7/99/786936215595.jpg 

मैंने इसे वैश्विक.एक्सएक्स फ़ाइल में डालने की कोशिश की;

routes.Add(
    "ImageRoute", 
    new Route("covers/{filepath}/{filename}", 
    new ImageRouteHandler())); 

मैं ImageHandler इस Question में पाया है, जो अच्छा काम करता है यदि आप एक ही उप-निर्देशिका (यानी '/images/15/786936215595.jpg') है, लेकिन विफल रहता है आप एकाधिक निर्देशिका है जब उपयोग कर रहा हूँ।

मैं एक वाइल्डकार्ड और कहा कि फ्लॉप काम (यानी 'नए रूट ("कवर/{filepath}/*/{fileName}"') की स्थापना की कोशिश की

यह एक बड़ा NAS से छवियों को प्रदर्शित होता है (कुछ लगता है की तरह 3 लाख चित्र) इसलिए इसकी पसंद नहीं मैं सिर्फ चारों ओर फ़ाइलों को स्थानांतरित कर सकते हैं

धन्यवाद

उत्तर

3

ठीक से खेलने के बाद ठीक है और Google fu मैंने पाया कि इसे कैसे काम करना है।

इस तरह की मार्ग परिभाषा बदलें;

routes.Add(
    "ImageRoute", 
    new Route("images/{*filepath}", 
    new ImageRouteHandler())); 

फिर इसे डिफ़ॉल्ट MapRoute के बाद रखें। फ़ाइलपैथ से पहले "*" महत्वपूर्ण हिस्सा है, एमवीसी को फाइलपाथ रूटडेटा के हिस्से के रूप में कुछ भी भेजने के लिए कहता है। तो GetHttpHandler() विधि में मैं इसका उपयोग करके पूरा पथ प्राप्त कर सकता हूं;

string fp = requestContext.RouteData.Values["filepath"] as string; 

वाट!

+0

धन्यवाद, यह मुझे धार्मिक पथ पर स्थापित करता है। –

0

आप एक मार्ग पैरामीटर के रूप में पूरे पथ का इलाज नहीं कर सकते जैसा तो:।!?

routes.Add(
    "ImageRoute", 
    "/images/{path}", 
    new { controller = "Image", action = "Image" } 
); 

और फिर ActionResult Image(string path) { } एक्शन विधि में पूरे पथ तक पहुंचें?

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