2016-05-13 11 views
0

Es folgt die Gewohnheit RouteBase KlasseController Aktion-Methode wird nicht aufgerufen wurden, wenn benutzerdefinierte routebase Klasse verwendet wird

public class CustomRoutingBehaviour:RouteBase 
     { 
      string[] allowedUrl; 
      public CustomRoutingBehaviour(string[] url) 
      { 
       allowedUrl = url; 
      } 

      public override RouteData GetRouteData(HttpContextBase httpContext) 
      { 
       RouteData route = null; 
       string browsedurl = httpContext.Request.AppRelativeCurrentExecutionFilePath; 
       if(allowedUrl.Contains(browsedurl,StringComparer.OrdinalIgnoreCase)) 
       { 
        route = new RouteData(this,new MvcRouteHandler()); 
        route.Values.Add("controller","CustomiziedController"); 
        route.Values.Add("action","Index"); 
        route.Values.Add("BrowsedURL",browsedurl); 

       } 

      return route; 
      } 

      public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) 
      { 
       return null; 
      } 
     } 

Es folgt die Routing-Konfiguration:

routes.Add(new CustomRoutingBehaviour(new string[] { "~/Customizied/Index", "~/Customizied/Index1" })); 

Antwort

0

ich genau hatte die gleiches Problem. Ich habe es gelöst, einen End-Schrägstrich (/) an der URL-Adresse im Browser hinzuzufügen. Achten Sie darauf, den Schrägstrich in Ihrem Code zu behandeln. Sie können den letzten Schrägstrich an jeder URL des Arrays hinzufügen, das Sie in der CustomRoutingBehaviour Klasse oder Teilzeichenfolge browsedurl Variable übergeben. Ich weiß nicht, warum es so funktioniert.

Verwandte Themen