2008-10-06 4 views
10

Ich habe ASP.NET Routing… Goodbye URL rewriting? und Using Routing With WebForms gelesen, die großartige Artikel sind, aber begrenzt auf einfache, illustrative, "Hallo Welt" -Komplexität Beispiele.ASP.NET Routing mit Web Forms

Ist jemand mit ASP.NET-Routing mit Webformularen auf eine nicht-triviale Art und Weise? Irgendwelche Fehler zu beachten? Performance-Probleme? Weitere empfehlenswerte Lektüre sollte ich mir vor einer eigenen Umsetzung ansehen?

EDIT Gefunden dieser zusätzliche nützliche URLs:

+0

bitte das Tag url-routing zu Ihrem Beitrag – Armstrongest

Antwort

0

Ein einfaches Beispiel dafür, wie Routing zu verwenden, in ASP.NET

  1. Leerer Web Application
  2. hinzufügen erstes Formular erstellen - Default.aspx
  3. hinzufügen zweite Form - Second.aspx
  4. Fügen Sie ein drittes Formular hinzu - Third.aspx
  5. In den Standardeinstellungen.aspx 3 Tasten -

    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. lesen Query-String auf der dritten Seite

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

Nun, wenn Sie das Programm ausführen, können Sie auf die zweite und dritte Form navigieren. So war es einmal. Lassen Sie uns Routing hinzufügen.

  1. Neuen Eintrag hinzufügen - Global.aspx mit 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. In default.aspx protected void Button1_Click (object sender, EventArgs e) { // Response.Redirect ("Second.aspx") modifizieren; 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. ändern Seite zu laden in third.aspx

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

Führen Sie das Programm, Bitte beachten Sie, dass url viel sauberer aussieht - es gibt Dateierweiterungen nicht drin (Second.aspx Zweitens wird gerade)

  1. Um mehr als ein Argument übergeben

    • neue Schaltfläche hinzufügen, mit dem folgenden Code default.aspx:

      protected void Button4_Click(object sender, EventArgs e) 
      { 
          Response.Redirect(GetRouteUrl("FourthRoute", new { Name = "Shoes" , Gender = "Male"})); 
      } 
      
    • Fügen Sie den folgenden Code in Global.asax

      routes.MapPageRoute(
           "FourthRoute", 
           "Fourth/{Name}-{Gender}", 
           "~/Fourth.aspx" 
      ); 
      
    • Fourth.aspx Seite mit dem folgenden erstellen Seitenlast:

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