Até agora não havia uma forma de configurar o ASP.Net Routing com o Web.config (ao menos que eu soubesse). Até agora, fazia-se assim:
Public Class GlobalApplication
Inherits System.Web.HttpApplication
Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
MapRoute takes the following parameters, in order:
(1) Route name
(2) URL with parameters
(3) Parameter defaults
routes.MapRoute( _
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index", .id = ""} _
)
End Sub
Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
End Sub
End Class
Então fiz algo aqui para ajudar. Criei um assembly para permitir a configuração. No web.config fica assim:
<gb.aspnetrouting>
<routing>
<routes>
<!--<route routeName="name of the route"
url="the url"
routeHandler="some
route handler" />-->
<route routeName="DefaultMvc"
url="{controller}/{action}/{id}"
routeHandler="MvcRouteHandler">
<defaults>
<default name="action" value="index"
type="System.String, mscorlib"/>
<default name="id" value=""
type="System.String, mscorlib"/>
</defaults>
<constraints>
<constraint name="basic"
value="[^\.]*"
type="System.String, mscorlib"/>
</constraints>
<dataTokens>
<dataToken name="someData"
value="I'm a data token" type="System.String, mscorlib"/>
</dataTokens>
</route>
</routes>
<ignoredRoutes>
<ignoredRoute url="{resource}.axd/{*pathInfo}" />
</ignoredRoutes>
<routeHandlers>
<routeHandler name="MvcRouteHandler"
type="System.Web.Mvc.MvcRouteHandler, System.Web.Mvc"/>
</routeHandlers>
</routing>
</gb.aspnetrouting>
E no Global.asax, fica assim:
Public Class GlobalApplication
Inherits System.Web.HttpApplication
Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
GB.RoutingConfig.RoutingConfiguration.Configure( _
"~/web.config", routes)
End Sub
Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
End Sub
End Class
No Global.asax existe apenas uma chamada ao método de configuração. Tirei a idéia do que já existe hoje no .Net Remoting, que possui chamada de configuração semelhante.
Já no web.config, você pode configurar as rotas, com Constraints, Defaults e DataTokens, o gerenciador de rota (que no MVC é sempre o MvcRouteHandler), e as rotas ignoradas. Até o time do MVC lançar o deles vou usar esse para ajudar. E parece que vai ser bem para frente, já que eles já disseram que vão focar em features, por enquanto.
Quem quiser baixar, pegue aqui a dll compilada, e aqui o código fonte. Fiquem à vontade para melhorar, e me dêem notícia se funcionou para vocês e se gostaram.
Já adianto que não é o assembly mais testado no mundo, então ele tem somente a seguinte garantia: "roda na minha máquina". Espero que na de vocês também rode, e deve rodar, mas não garanto que está livre de bugs, já que foi mais um exercício do que a construção de um módulo, ok?
Postado na(s) categoria(s)
ASP.Net Routing
pelo
giovanni bassi em 20 de julho de 2008 às 23:50
| Tags:
routing,
asp.net mvc
1b2509f7-3bc1-4cad-9b98-aa9276a086d3|0|.0