2012-02-17 11 views
13

पर/समाचार/5 के लिए मार्ग को कैसे मैप करें, मैं यह पहचानने की कोशिश कर रहा हूं कि मेरे समाचार नियंत्रक को/समाचार/5 के लिए मार्ग कैसे मैप करना है।मेरे समाचार नियंत्रक

public class NewsController : BaseController 
{ 
    // 
    // GET: /News 

    public ActionResult Index(int id) 
    { 
     return View(); 
    } 

} 

यह मेरा Global.asax.cs नियम है::

यह मेरा NewsController है

 routes.MapRoute(
      "News", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "News", action = "Index", id = -1 } // Parameter defaults 
     ); 

मैं/समाचार/5 पर जाने की कोशिश लेकिन मैं एक संसाधन नहीं मिला त्रुटि प्राप्त , हालांकि जब/समाचार/सूचकांक/5 पर जा रहा है यह काम करता है?

मैंने केवल {controller}/{id} को आजमाया है, लेकिन यह सिर्फ एक ही समस्या उत्पन्न करता है।

धन्यवाद!

+2

जब आप की कोशिश की '{नियंत्रक}/{id} 'क्या आपने डिफ़ॉल्ट में कार्रवाई की है? 'नया {नियंत्रक =" समाचार ", क्रिया =" सूचकांक ", आईडी = -1}' – Lazarus

उत्तर

18

आपका {controller}/{id} मार्ग सही था लेकिन आप अन्य मार्ग के बाद इसे पंजीकृत कर सकते हैं। मार्ग सूची में यह शीर्ष नीचे खोजता है और यह पहला मैच जीतता है।

स्टीयर रूटिंग में सहायता के लिए मैं यह सुनिश्चित करने के लिए रूट बाधाएं बनाने का सुझाव दूंगा कि # 1 नियंत्रक मौजूद है और #एक संख्या है।

this article

मुख्य रूप से देखें:

routes.MapRoute( 
     "Index Action", // Route name 
     "{controller}/{id}", // URL with parameters EDIT: forgot starting " 
     new { controller = "News", action = "Index" }, 
     new {id= @"\d+" } 
    ); 
+0

बहुत बहुत धन्यवाद, मैं 8 मिनट के लिए आपका संदेश स्वीकार नहीं कर सकता लेकिन मैं वापस आऊंगा। आपने बाधाओं के साथ अपनी समस्या तय की: 'नया {नियंत्रक =" समाचार ", आईडी = @" 0 | -? [1-9] \ d * "} // रूट बाधाएं 'और इसे अन्य मानचित्र मार्ग से ऊपर ले जाना – ElveMagicMike

6

आप सुनिश्चित करें कि आपके नए मार्ग, अपने डिफ़ॉल्ट मार्ग से पहले है, इसलिए की तरह बनाने की जरूरत है:

routes.MapRoute(
     "NewsAbbr", // Route name 
     "{controller}/{id}", // URL with parameters 
     new { controller = "News", action = "Index", id = -1 } // Parameter defaults 
    ); 


    routes.MapRoute(
     "News", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "News", action = "Index", id = -1 } // Parameter defaults 
    ); 
संबंधित मुद्दे