ASP.NET MVC-regex-route Einschränkung

Ich habe Probleme mit einer bestimmten Einschränkung, die ich versuche zum einrichten einer route. Meine URL muss wie folgt Aussehen: http://hostname/id-my-title-can-be-that-long where id zusammengesetzt ist, die mit der Ziffer nur und der Titel ist Kleinbuchstaben mit Bindestrichen separator. Die id und der Titel sind auch getrennt mit einem Bindestrich. Zum Beispiel: http://hostname/123-my-title.

Hier ist meine route:

routes.MapRoute(
    "Test",
    "{id}-{title}",
    new { controller = "Article", action = "Index" },
    new { id = @"(\d)+", title = @"([a-z]+-?)+" }
);

Die URL wird korrekt erstellt mit dem html-helper:

<%: Html.ActionLink("My link", "Index", "Article", new { id = Model.IdArticle, title = Model.UrlTitle }, null) %>

wo natürlich Modell.IdArticle ist Int32 und das Modell.UrlTitle einer vorgeformten Schnur von meiner Titel, die passen meine Anforderungen (Kleinbuchstaben nur, Leerzeichen durch Bindestriche ersetzt).

Das problem ist, wenn ich dem link Folgen, der passende controller & Methode nicht aufgerufen wird, fällt es auf die nächste route, die falsch ist.

Für die Akten, ich bin auf ASP.NET MVC 2.

Jemand eine Idee?

Vielen Dank im Voraus,
Fabian

Schließlich werden wir getrennt die ID aus der Titel mit einem undescore. Ich bin immer noch Fragen, warum das nicht funktioniert, aber es ist nicht mehr blockiert. Vielen Dank für Ihre Hilfe!

InformationsquelleAutor Fabian Vilers | 2010-12-30

Schreibe einen Kommentar