Partilhar via


Como: Definir uma rota

É usar o roteamento para tratar as solicitações de URL não são mapeadas para um arquivo físico no site Web do ASP.NET.Você criar uma rota definindo um padrão para a URL e especificando um manipulador é chamado em resposta à solicitação.

Quando você define uma rota, você pode especificar valores padrão que podem fornecer um valor que será usado se um parâmetro está faltando na solicitação de URL.Você também pode especificar restrições para certificar-se de que os parâmetros contenham valores válido.

Você pode usar o roteamento para gerar URLs em seu aplicativo, sistema autônomo criar dinamicamente URLs para hiperlinks.Quando você construir um URL, mais de uma definição de rota pode coincidir com os parâmetros que você fornecer.Você pode especificar qual rota deve ser usado para criar a URL, fornecendo o nome de uma rota que foi especificado ao registrar a rota.

Criando uma rota

Cria uma rota para corresponder um padrão de URL e especificar a maneira como as solicitações para esse padrão de URL são manipuladas.

Para criar uma rota

  1. Adicionar um método ao arquivo global.asax que cria uma instância do Route classe. No construtor de classe, conjunto o url parâmetro para o padrão de URL é usado para correspondência de solicitações de URL e conjunto o routeHandler parâmetro a uma instância da classe que processa a solicitação.

    Você pode adicionar um parâmetro pega-tudo ao padrão de URL se desejar fazer a correspondência com uma rota para uma solicitação de URL, mesmo que a solicitação inclui mais parâmetros daqueles que estão definidos no roteiro.Para adicionar um parâmetro pega-tudo, preceda o nome do último parâmetro com um asterisco.

  2. Se você quiser especificar valores padrão para parâmetros de rota, conjunto o Defaults propriedade.

  3. Se você desejar validar valores de parâmetro de rota, defina o Constraints propriedade a ser uma das seguintes opções:

    • Uma seqüência de caracteres que define uma expressão regular.A expressão regular não diferencia maiúsculas de minúsculas.

    • Um objeto que implementa o IRouteConstaint interface e que inclui um Match método.

  4. Adicionar o Route objeto para o Routes propriedade das RouteTable objeto. Se você desejar fornecer um nome para a rota telefonar o Add método; caso contrário, telefonar o Add método.

  5. No Application_Start manipulador no arquivo global.asax, chame o método que você adicionou na primeira etapa.

Exemplo

O exemplo a seguir mostra um método chamado RegisterRoutes que é chamado de Application_Start no arquivo global.asax. O método adiciona dois Route objetos que possuem o parâmetro de um ano e localidade. Quando você gerar um URL, as rotas podem ser diferenciadas por um nome.O exemplo mostra sistema autônomo adicionar essas rotas sistema autônomo rotas nomeadas.As rotas têm restrições, valores padrão e um parâmetro pega-tudo.

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

Shared Sub RegisterRoutes(routes As RouteCollection)
    Dim salesUrlPattern As String
    Dim expensesUrlPattern As String
    Dim salesRoute As Route
    Dim expensesRoute As Route

    salesUrlPattern = "SalesReport/{locale}/{year}/{*queryvalues}"
    salesRoute = New Route(salesUrlPattern, New SalesRouteHandler)
    salesRoute.Constraints = New RouteValueDictionary(New With _
        {.locale = "[a-z]{2}-[a-z]{2}", .year = "\d{4}"})
    salesRoute.Defaults = New RouteValueDictionary(New With _
        {.locale = "en-US", .year = DateTime.Now.Year.ToString()})

    routes.Add("SalesRoute", salesRoute)

    expensesUrlPattern = "ExpensesReport/{locale}/{year}/{*queryvalues}"
    expensesRoute = New Route(expensesUrlPattern, New ExpensesRouteHandler)
    expensesRoute.Constraints = New RouteValueDictionary(New With _
        {.locale = "[a-z]{2}-[a-z]{2}", .year = "\d{4}"})
    expensesRoute.Defaults = New RouteValueDictionary(New With _
        {.locale = "en-US", .year = DateTime.Now.Year.ToString()})

    routes.Add("ExpensesRoute", expensesRoute)

End Sub
protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Add("SalesRoute", new Route
    (
         "SalesReport/{locale}/{year}/{*queryvalues}"
         , new SalesRouteHandler()
    )
       {
          Constraints = new RouteValueDictionary 
          {{"locale", "[a-z]{2}-[a-z]{2}"},{"year", @"\d{4}"}},
          Defaults = new RouteValueDictionary 
           {{"locale", "en-US"}, {"year", DateTime.Now.Year.ToString()}}
       });
    routes.Add("ExpensesRoute", new Route
    (
         "ExpensesReport/{locale}/{year}/{*queryvalues}"
         , new ExpensesRouteHandler()
    )
       {
          Constraints = new RouteValueDictionary 
          {{"locale", "[a-z]{2}-[a-z]{2}"},{"year", @"\d{4}"}},
          Defaults = new RouteValueDictionary 
           {{"locale", "en-US"}, {"year", DateTime.Now.Year.ToString()}}
       });
}

Consulte também

Tarefas

Como: Construir um URL de uma rota

Conceitos

Roteamento de ASP.NET