Das Beispiel, das ich überall sehen für MVC-Stil-Routing ist so etwas wie dieses:RouteTable.Routes RouteCollection?
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
Was ist der Grund die RouteTable.Routes Sammlung RegisterRoutes() übergeben? Warum nicht einfach:
Welche RouteCollection neben RouteTable.Routes würde eine Route hinzugefügt werden? Ist RouteTable.Routes die RouteCollection für die Webanwendung nicht?
Ich habe einen besonderen IRouteHandler mit verfügt über eine Karte() Methode:
public class ChatRouteHandler : IRouteHandler
{
private static bool mapped;
public void Map()
{
if (!ChatRouteHandler.mapped)
{
RouteTable.Routes.Add
(
new Route("chat/{room}/{date}",
new ChatRouteHandler())
);
}
}
Gibt es einen Grund, dass Map() eine Routecollection akzeptieren sollte und nicht auf die RouteTable.Routes Sammlung? Welche andere RouteCollection würde diesem IRouteHandler hinzugefügt werden?
Ich kann definitiv sehen, wie dies Klassendesigns beeinflussen könnte. Können Sie ein Beispiel oder eine Illustration des Komponententests für eine RouteCollection oder IRouteHandler empfehlen? Könnte ein Unit-Test nicht in RouteTable.Routes aussehen? – core
Haacked hat eine gute Testversion Demo für Routen. http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx Bei meiner Arbeit leitete ein Kollege RouteCollection, um etwas ähnliches zu tun. – CVertex
Danke für den Link. Bin dankbar. Bezüglich Map() bin ich etwas verwirrt. Gibt es eine Map() - Erweiterungsmethode auf MvcHandler oder so? Ich bin komplett neu in MVC. – core