2008-10-06 10 views
10

J'ai lu ASP.NET Routing… Goodbye URL rewriting? et Using Routing With WebForms qui sont d'excellents articles, mais limités à des exemples simples, illustratifs, de "bonjour monde".Routage ASP.NET avec Web Forms

Est-ce que quelqu'un utilise le routage ASP.NET avec des formulaires Web de manière non triviale? Des pièges à prendre en compte? Les problèmes de performance? Lectures recommandées supplémentaires que je devrais regarder avant de labourer dans une exécution de moi-même?

EDIT trouvé ces URL supplémentaires utiles:

+0

s'il vous plaît le tag url-routing à votre message – Armstrongest

Répondre

0

Un exemple simple de la façon d'utiliser le routage dans ASP.NET

  1. Créer vide Application Web
  2. Ajouter première forme - Default.aspx
  3. Ajouter deuxième forme - Second.aspx
  4. Ajouter une troisième forme - Third.aspx
  5. Ajouter la valeur par défaut.ASPX 3 boutons -

    protected void Button1_Click(object sender, EventArgs e) 
    { 
        Response.Redirect("Second.aspx"); 
    } 
    
    protected void Button2_Click(object sender, EventArgs e) 
    { 
        Response.Redirect("Third.aspx?Name=Pants"); 
    } 
    
    protected void Button3_Click(object sender, EventArgs e) 
    { 
        Response.Redirect("Third.aspx?Name=Shoes"); 
    } 
    
  6. Lire la chaîne de requête sur troisième page

    protected void Page_Load(object sender, EventArgs e) 
    { 
        Response.Write(Request.QueryString["Name"]); 
    } 
    

Maintenant, si vous exécutez le programme, vous serez en mesure de naviguer à la forme deuxième et troisième. Voici comment c'était. Ajoutons un routage.

  1. Ajouter un nouvel élément - Global.aspx en utilisant System.Web.Routing;

    protected void Application_Start(object sender, EventArgs e) 
    { 
        RegisterRoutes(RouteTable.Routes); 
    } 
    void RegisterRoutes(RouteCollection routes) 
    { 
        routes.MapPageRoute(
         "HomeRoute", 
         "Home", 
         "~/Default.aspx" 
        ); 
        routes.MapPageRoute(
         "SecondRoute", 
         "Second", 
         "~/Second.aspx" 
        ); 
        routes.MapPageRoute(
         "ThirdRoute", 
         "Third/{Name}", 
         "~/Third.aspx" 
        ); 
    } 
    
  2. Dans default.aspx modifier Button1_Click vide protégé (expéditeur d'objet, EventArgs e) { // Response.Redirect ("Second.aspx"); Response.Redirect (GetRouteUrl ("SecondRoute", null)); }

    protected void Button2_Click(object sender, EventArgs e) 
    { 
        //Response.Redirect("Third.aspx?Name=Pants"); 
        Response.Redirect(GetRouteUrl("ThirdRoute", new {Name = "Pants"})); 
    } 
    
    protected void Button3_Click(object sender, EventArgs e) 
    { 
        // Response.Redirect("Third.aspx?Name=Shoes"); 
        Response.Redirect(GetRouteUrl("ThirdRoute", new { Name = "Shoes" })); 
    } 
    
  3. Modifier chargement de la page dans third.aspx

    protected void Page_Load(object sender, EventArgs e) 
    { 
        //Response.Write(Request.QueryString["Name"]); 
        Response.Write(RouteData.Values["Name"]); 
    } 
    

Exécutez le programme, S'il vous plaît noter que l'URL ressemble beaucoup plus propre - il y a pas d'extensions fichier dans ce (Second.aspx devient simplement Second)

  1. Pour passer plus d'un argument

    • bouton Ajouter nouveau pour default.aspx avec le code suivant:

      protected void Button4_Click(object sender, EventArgs e) 
      { 
          Response.Redirect(GetRouteUrl("FourthRoute", new { Name = "Shoes" , Gender = "Male"})); 
      } 
      
    • ajoutez le code suivant à Global.asax

      routes.MapPageRoute(
           "FourthRoute", 
           "Fourth/{Name}-{Gender}", 
           "~/Fourth.aspx" 
      ); 
      
    • Créer une page Fourth.aspx avec les éléments suivants chargement de la page:

      protected void Page_Load(object sender, EventArgs e) 
      { 
      Response.Write("Name is: " + RouteData.Values["Name"] + " and Gender is " + RouteData.Values["Gender"]); 
      }