2010-03-30 12 views
7

में खोज मार्ग मेरे पास मेरे मास्टर पेज और एक सेरेच नियंत्रक और दृश्य में एक साधारण खोज फ़ॉर्म है। मैं स्ट्रिंग खोज शब्द "myterm" के लिए निम्नलिखित मार्ग प्राप्त करने के लिए (उदाहरण के लिए) कोशिश कर रहा हूँ: जड़/खोज/mytermएएसपी.नेट एमवीसी

मास्टर पेज में प्रपत्र:

<% using (Html.BeginForm("SearchResults", "Search", FormMethod.Post, new { id = "search_form" })) 
          { %> 
         <input name="searchTerm" type="text" class="textfield" /> 
         <input name="search" type="submit" value="search" class="button" /> 
         <%} %> 

नियंत्रक कार्रवाई :

public ActionResult SearchResults(string searchTerm){...} 

मार्ग मैं का उपयोग कर रहा हूँ:

routes.MapRoute(
      "Search", 
      "search/{term}", 
      new { controller = "Search", action = "SearchResults", term = (string)null } 
     ); 

routes.MapRoute(
      "Default", 
      "{controller}/{action}", 
      new { controller = "Home", action = "Index" } 
     ); 

मुझे हमेशा खोज शब्द के बिना यूआरएल "रूट/सर्च" मिल रहा है, इससे कोई फर्क नहीं पड़ता कि मैं किस खोज शब्द में प्रवेश करता हूं।

धन्यवाद।

+0

मुझे लगता है कि यह फॉर्म वास्तव में ठीक पोस्ट कर रहा है और आप केवल एक मार्ग जोड़ रहे हैं ताकि आप सीधे यूआरएल से खोज को कॉल कर सकें? –

उत्तर

3

आप अपने रूट में अपने स्टार्ट टैग और {टर्म} में आईडी का उपयोग कर रहे हैं।

दो मिलान करने की आवश्यकता है।

+0

आईडी जो मैं शुरुआत में उपयोग कर रहा हूं वह सिर्फ फॉर्म पहचानकर्ता है, मैं फॉर्म के खोज के इनपुट इनपुट क्षेत्र से मूल्य को कैसे शुरू कर सकता हूं? – vobs

3

तो अगर मैं आपको सही तरीके से समझता हूं, तो आप एक मार्ग बनाने की कोशिश कर रहे हैं ताकि आप http://www.whatever.com/search/blah पर जा सकें और आपको खोज के साथ सर्च रिजल्ट एक्शन में भेजा जाएगा। टर्म पैरामीटर "blah" है।

निम्नलिखित मार्ग पर यह समस्या दूर होगी:

routes.MapRoute(
       "Search", 
       "search/{searchTerm}", 
       new { controller = "Search", action = "SearchResults" } 
      ); 

यकीन है कि मार्ग डिफ़ॉल्ट मार्ग से पहले है या डिफ़ॉल्ट पहले मिलान किया जाएगा सुनिश्चित करें। ध्यान दें कि आपकी क्रिया में पैरामीटर से मेल खाने के लिए "टर्म" को "searchTerm" में बदल दिया गया है। यह ज़रूरी है।

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