2008-10-06 30 views
10

He leído ASP.NET Routing… Goodbye URL rewriting? y Using Routing With WebForms que son excelentes artículos, pero limitados a simples ejemplos ilustrativos de "hello world".Enrutamiento ASP.NET con formularios web

¿Alguien está usando el enrutamiento ASP.NET con formularios web de una manera no trivial? ¿Algún problema para tener en cuenta? ¿Problemas de desempeño? ¿Lectura recomendada que debería consultar antes de iniciar una implementación propia?

EDIT encontradas estas URL útiles adicionales:

+0

por favor la etiqueta url-routing a su publicación – Armstrongest

Respuesta

0

Un ejemplo sencillo de cómo utilizar el enrutamiento de ASP.NET

  1. Crear vacío aplicación Web
  2. Añadir primera forma - Default.aspx
  3. Agregar segunda forma - Second.aspx
  4. Agregar el tercer formulario - Third.aspx
  5. Agregar a los valores predeterminados.aspx 3 botones -

    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. Leer cadena de consulta en la tercera página

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

Ahora bien, si se ejecuta el programa, usted será capaz de navegar a la forma de la segunda y tercera. Así es como solía ser. Agreguemos el enrutamiento.

  1. Agregar nuevo elemento - Global.aspx usando 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. En default.aspx modificar protegido (remitente objeto, EventArgs e) void Button1_Click { // Response.Redirect ("Second.aspx"); Response.Redirect (GetRouteUrl ("SecondRoute", nulo)); }

    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. Modificar carga de la página en third.aspx

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

Ejecutar el programa, Tenga en cuenta que el URL se ve mucho más limpio - no hay extensiones de archivo en el mismo (Second.aspx En segundo lugar se convierte simplemente)

  1. Para pasar más de un argumento

    • añadir nuevo botón a default.aspx con el siguiente código:

      protected void Button4_Click(object sender, EventArgs e) 
      { 
          Response.Redirect(GetRouteUrl("FourthRoute", new { Name = "Shoes" , Gender = "Male"})); 
      } 
      
    • Agregue el código siguiente para Global.asax

      routes.MapPageRoute(
           "FourthRoute", 
           "Fourth/{Name}-{Gender}", 
           "~/Fourth.aspx" 
      ); 
      
    • crear la página Fourth.aspx con la siguiente carga de la página:

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