2014-09-24 4 views
14

मैं उन सभी यूआरएल को पुनर्निर्देशित करने का प्रयास कर रहा हूं जो एक मौजूदा नियंत्रक से किसी निश्चित नियंत्रक से मेल नहीं खाते हैं।नियंत्रक या एक्शन नाम के बिना Asp.net mvc रूटिंग

उदाहरण के लिए, यूआरएल mywebsite.com/newyork mywebsite.com/Cities/Info/newyork

मैं अपने RegisterRoutes में निम्नलिखित कोड का उपयोग कर रहा के रूप में कार्रवाई की जानी चाहिए, लेकिन यह मैं के रूप में काम करने के लिए प्रतीत नहीं होता एक 404 प्रतिक्रिया मिलती है:

 routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
     routes.MapRoute(
      name: "Cities", 
      url: "{cityname}", 
      defaults: new { controller = "Cities", action = "Info", cityname= "" } 
     ); 

उत्तर

18

आप अपने शहरों मार्ग पहले डाल दिया और खाली डिफ़ॉल्ट पैरामीटर छोड़ देना चाहिए:

routes.MapRoute(
     name: "Cities", 
     url: "{cityname}", 
     defaults: new { controller = "Cities", action = "Info" } 
    ); 
    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

मार्गों क्रम में कार्रवाई की जाती है ताकि आप होना चाहिए सबसे विशिष्ट पहले से कम से कम विशिष्ट (आपका डिफ़ॉल्ट मार्ग)।

आपकी वेबसाइट.com/newyork डिफ़ॉल्ट मार्ग से मेल खाता है, यह आपके शहर के मार्ग को जारी नहीं रख रहा था।

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