2009-07-25 23 views
1

ich ratlos bin ... hier ist mein Weg:ASP.NET MVC - Strange Routing-Problem, sehr einfache Route Fehlanpassungsproblem

routes.MapRoute("LangOnly", "{language}", 
    new { controller = "Home", action = "Root", language = "en" }, 
    new { language = @"en|ja" }); 

es passt www.domain.com/en, aber nicht übereinstimmen www.domain.com/ja.

nicht wahr? Ich bin sogar so weit gegangen, irgendwelche anderen Routen zu kommentieren ... irgendwie steckengeblieben. ;/

Update: Hier ist die Root-Aktion auf dem Home-Controller.

[CompressFilter] 
public ActionResult Root() 
{ 
    if (!IsEnglish) 
     return RedirectToAction("Index", "Biz", new { b = "" }); 

    return Request.IsAuthenticated ? View("LoggedInRoot") : View("Root"); 
} 

Sie stellen keine Sprachparameter, weil es, wie dies auf der Basis-Controller in OnActionExecuting, Set wird:

var l = (RouteData.Values["language"] != null) ? RouteData.Values["language"].ToString() : string.Empty; 

    if (string.IsNullOrEmpty(l)) 
     l = "en"; 

    if (l.Contains("en")) 
    { 
     IsEnglish = true; 
     l = "en"; 
    } 
    else 
    { 
     IsEnglish = false; 
     l = "ja"; 
    } 

    ViewData["lang"] = l.ToLower(); 
    Language = l.ToLower(); 
für mich
+2

Haben Sie den Roacked Debugger von Haacked probiert? http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx –

+0

Haben Sie irgendwelche Routen darüber? –

+0

Ich habe es gerade mit dem Routen-Debugger getestet (Danke für Link), es steht "True", dass es passt ... wth? – Chaddeus

Antwort

1

funktioniert perfekt mit Ihrer Route. Versuchen Sie diese einfache Konfiguration:

routes.MapRoute("LangOnly", "{language}", 
       new {controller = "Home", action = "Index", language = "en"}, 
       new {language = @"en|ja"}); 


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

Und Ihre Aktion:

public ActionResult Index(string language) 
{ 
..... 

(Ich bin mit „Index“, wie die Aktion hier, offensichtlich es ändern zu „Root“, wenn diese in der Tat ist der Aktionsname .)

+0

den Fehler gefunden, Umleitung auf der home/root-Aktion nicht übereinstimmte. Pfui. Danke! – Chaddeus