El ejemplo que vemos en todas partes para el enrutamiento de estilo MVC es algo como esto: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()
));
}
¿Cuál es la razón para pasar a la colección RouteTable.Routes a RegisterRoutes()? ¿Por qué no simplemente:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
public static void RegisterRoutes()
{
RouteTable.Routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
Lo RouteCollection además RouteTable.Routes se añadiría a una ruta? ¿No es RouteTable.Routes el RouteCollection para la aplicación web?
Tengo un IRouteHandler particular tiene un método de mapa():
public class ChatRouteHandler : IRouteHandler
{
private static bool mapped;
public void Map()
{
if (!ChatRouteHandler.mapped)
{
RouteTable.Routes.Add
(
new Route("chat/{room}/{date}",
new ChatRouteHandler())
);
}
}
¿Hay una razón por la que mapa() debe aceptar un RouteCollection y no agregar a la colección RouteTable.Routes? De nuevo, ¿a qué otra RouteCollection se agregaría este IRouteHandler?
Definitivamente puedo ver cómo esto podría afectar los diseños de clase. ¿Puede recomendar un ejemplo o una ilustración de pruebas unitarias para un RouteCollection o IRouteHandler? Después de todo, ¿no podría verse una prueba unitaria en RouteTable.Routes? – core
Haacked tiene una buena demostración de prueba de unidad para las rutas. http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx En mi trabajo, un colega deriva RouteCollection para hacer algo similar. – CVertex
Gracias por el enlace. Lo aprecio. En cuanto a Map(), estoy un poco confundido. ¿Hay un método de extensión Map() en MvcHandler o algo así? Soy completamente nuevo en MVC. – core