2012-02-17 11 views
13

/News/5 için bir rotayı harita denetleyicime nasıl eşleştireceğimi bulmaya çalışıyorum. Bu benim Global.asax.cs kural Haber denetleyiciye/News/5 için bir rota nasıl eşlenir

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

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

} 

olduğunu

:

Bu

benim NewsController olduğunu

 routes.MapRoute(
      "News", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "News", action = "Index", id = -1 } // Parameter defaults 
     ); 
I/Haber/5'e gidin çalışın

ama kaynak bulunamadı hata alırsınız Ancak,/News/Index/5'e giderken işe yarıyor mu?

Sadece {controller}/{id}'u denedim, ancak bu yalnızca aynı sorunu oluşturdu.

Teşekkürler!

+2

'{denetleyicisi}/{id} 'Varsayılanlarda eylemde bulundun mu? 'new {controller =" Haberler ", action =" Index ", id = -1}' – Lazarus

cevap

18

{controller}/{id} Rotanız yanlıştı, ancak rotayı diğer rotadan sonra kaydettiniz. Güzergah listesinde yukarıdan aşağıya doğru arama yapar ve bulduğu ilk maç kazanır.

Yönlendirmeyi yönlendirmeye yardımcı olmak için, denetleyicinin mevcut olduğunu ve # 2'nin {id} numaralı bir numara olduğundan emin olmak için bunun için yol kısıtlamaları oluşturmanızı öneririz.

Esas this article

bakınız:

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

Teşekkürler, iletinizi 8 dakika boyunca kabul edemem ama geri döneceğim. Sorunumu şu kısıtlamalarla düzelttiniz: "yeni {controller =" Haberler ", id = @" 0 | -? [1-9] \ d * "} // Rota kısıtlamaları" ve diğer harita rotasının üzerine taşıdığınızda – ElveMagicMike

6

Yeni rotanın şöyle, varsayılan rota önce olduğundan emin olmak gerekir: çalıştığımızda

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 
    ); 
İlgili konular