2013-06-01 7 views
5

Karte habe ich einen Controller Registration und eine Aktionsmethode darin wie folgt benannt:keine Route für einen bestimmten Controller in mvc 4

public JsonResult GetReqs(GridSettings gridSettings, int rt) 
    { 
     ...//whatever 

     return Json(jsonData, JsonRequestBehavior.AllowGet); 
    } 

So habe ich eine Route und jetzt meine RouteConfig.cs ist wie folgt :

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "RegReq", 
      url: "{Registration}/{GetReqs}/{rt}", 
      defaults: new { controller = "Registration", action = "GetReqs", rt = UrlParameter.Optional } 
     ); 

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

jedoch habe ich nicht den rt Parameter und die Aktionsmethode GetReqs ist (gesetzt ich es einen Haltepunkt, aber es ist nichts passiert) nicht genannt zugreifen können. Wo ist der Fehler?

Edit: Link-Beispiel habe ich versucht: ~/Registration/GetReqs/1

Antwort

6

Ich glaube, Sie brauchen, um die Klammern in Ihrer ersten Route zu entfernen:

routes.MapRoute(
      name: "RegReq", 
      url: "Registration/GetReqs/{rt}", 
      defaults: new { controller = "Registration", action = "GetReqs", 
       rt = UrlParameter.Optional } 
     ); 

Die Standardroute hat {controller} MVC zu sagen, um die Zeichenfolge zu verwenden, in diesem Abschnitt der URL als den Controller-Namen. Sie kennen den Controller, also müssen Sie nur die spezifische Zeichenfolge abgleichen.

+0

Behoben! Danke vielmals – AminSaghi