Route.Defaults Property

 

Gets or sets the values to use if the URL does not contain all the parameters.

Namespace:   System.Web.Routing
Assembly:  System.Web (in System.Web.dll)

Public Property Defaults As RouteValueDictionary

Property Value

Type: System.Web.Routing.RouteValueDictionary

An object that contains the parameter names and default values.

The Defaults property enables you to set the value for a URL parameter if the URL does not contain a segment for that parameter. You assign a RouteValueDictionary object to the Defaults property. Each element in the RouteValueDictionary object contains the name of a parameter and the value to use if the parameter is missing.

You can include a default value for a parameter that is not defined in the Url property as a segment. When ASP.NET routing handles a request, this default value is always passed to the route handler. When you construct a URL and you include a value for a default parameter that is not defined as a segment, the route will only be considered a match if the value that you provided matches the default value for the route.

The following example shows how to create a Route object and set the Constraints, DataTokens, and Defaults properties.

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    RegisterRoutes(RouteTable.Routes)
End Sub

Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
    Dim urlPattern As String
    Dim reportRoute As Route

    urlPattern = "{locale}/{year}"

    reportRoute = New Route(urlPattern, New ReportRouteHandler)
    reportRoute.Defaults = New RouteValueDictionary(New With {.locale = "en-US", .year = DateTime.Now.Year.ToString()})
    reportRoute.Constraints = New RouteValueDictionary(New With {.locale = "[a-z]{2}-[a-z]{2}", .year = "\d{4}"})
    reportRoute.DataTokens = New RouteValueDictionary(New With {.format = "short"})

    routes.Add(reportRoute)
End Sub

The following example shows a Route object whose Defaults property contains a parameter that is not part of the pattern in the Url property.

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    RegisterRoutes(RouteTable.Routes)
End Sub

Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
    Dim urlPattern As String
    Dim reportRoute As Route

    urlPattern = "{locale}/{year}"

    reportRoute = New Route(urlPattern, New ReportRouteHandler)

    reportRoute.Defaults = New RouteValueDictionary(New With {.months = "all"})

    routes.Add(reportRoute)
End Sub

.NET Framework
Available since 3.5
Return to top
Show: