2010-07-08 17 views
16

अगर मैं इसे /Mycontroller/NextBySURNAME/12/स्मिथ% 20Simon साथ फोन निम्नलिखित नियंत्रक कार्रवाईक्यों asp.net MVC के मार्ग

public ActionResult NextBySURNAME(int id, string data) 
    { 
     //code to process the data and edit the id accoringly not written yet 
     return RedirectToAction("Edit", new { id = id }); 
    } 

लो मारने (इस मामले में मान्य डेटा) 20 ट्रेलिंग% करता है

तो यह ठीक काम करता है (इस मामले संपादन रिकॉर्ड में 12) लेकिन

/Mycontroller/NextBySURNAME/12/स्मिथ 20%

मुझे 404

अब मुझे पता है कि कुछ मामलों में मेरी समस्या में डोमेन पिछला सफेद स्थान महत्वपूर्ण है, इसलिए मैं इसे ट्रिम करना नहीं चाहता हूं। तो यह मेरा मार्ग क्यों तोड़ रहा है?

 routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}/{data}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional, data=UrlParameter.Optional } // Parameter defaults 
     ); 
+0

रॉबर्ट: मुझे पता है कि * कोड * सी # होता है लेकिन रूटिंग को तोड़ने की समस्या 20% की समस्या (संभवतः) भाषा के लिए विशिष्ट नहीं है। मैं इस सी # – Andiih

+2

वाह को टैग नहीं करना चाहता, बस कोशिश की, यह दिलचस्प है ... – Aren

+1

@Andiih और रॉबर्ट: '.NET' शायद' C# 'से अधिक वर्णनात्मक टैग होगा, हालांकि मुझे यह प्रश्न मिला क्योंकि मैं 'C#' – Aren

उत्तर

8

तो मैंने कुछ मार्ग डीबगिंग किया और पाया कि अंतरिक्ष के साथ समाप्त होने वाले मार्गों का मूल्यांकन मेरे एमवीसी ऐप द्वारा भी नहीं किया जा रहा था। इसलिए, आईआईएस को इन अनुरोधों को खराब तरीके से संभालना होगा।

मैंने पिछली जगहों से मेल खाने के लिए आईआईएस 7.5 में एक पुनर्लेखन नियम जोड़ा और अंतरिक्ष के बिना उन्हें उसी यूआरएल के रूप में फिर से लिखना शुरू किया। मैं इस समाधान से संतुष्ट नहीं हूं लेकिन आईआईएस पीछे की जगहों के साथ यूआरएल मिशेलल्स के बारे में एक स्पष्टीकरण नहीं पा रहा हूं।

+1

ऐसा लगता है जैसे किसी को जोड़ने की ज़रूरत है, अनिवार्य रूप से , आईआईएस के अंदर कहीं 'ट्रिम()'। :) – JYelton

+0

@ जेयलटन और बीसी, यदि आप कुछ ऐसा फॉर्म खोजना चाहते हैं जैसे: 'हैलो' 'यदि ट्रिम होता है, तो यह टूट जाएगा। रूटिंग को उम्मीद के अनुसार काम करना चाहिए और बाद में संभालने के लिए "स्मिथ" के स्ट्रिंग (ओपीएस मामले में) का उत्पादन करना चाहिए। – Aren

+0

मैं सहमत हूं। आईआईएस को अच्छा खेलने के लिए आप कैसे प्राप्त करते हैं? –

1

मुझे लगता है कि चरित्र से बचने के तरीके को संभाला जा रहा है .NE 4.0 में, लेकिन मैंने इसे स्वयं नहीं किया है। http://msdn.microsoft.com/en-us/library/system.uri.aspx देखें।

एंड्रयूज URL-encoded slash in URL

इसके अलावा How to create a Uri instance parsed with GenericUriParserOptions.DontCompressPath

का जवाब यह सब केवल जंगली अनुमान लगा है, लेकिन शायद यह मदद करता है।

+0

धन्यवाद एमएफ। वहां उपयोगी जानकारी है, मैं तकनीकों के साथ प्रयोग करूंगा, लेकिन यह ध्यान देने योग्य है कि केवल 20% जो इसे तोड़ता है, अन्य भागने वाले पात्रों का एक ही प्रभाव नहीं होता है। – Andiih