2008-10-06 22 views
10

Tôi đã đọc ASP.NET Routing… Goodbye URL rewriting?Using Routing With WebForms là các bài viết tuyệt vời, nhưng giới hạn trong ví dụ đơn giản, minh họa, "xin chào thế giới" đơn giản, minh họa.Định tuyến ASP.NET với các biểu mẫu web

Có ai ở đó sử dụng định tuyến ASP.NET với biểu mẫu web theo cách không tầm thường không? Bất kỳ gotchas để được nhận thức? Vấn đề hiệu năng? Đọc thêm tôi nên xem xét trước khi cày vào một thực hiện của riêng tôi?

EDIT Tìm thấy các URL bổ sung hữu ích:

+0

vui lòng định tuyến url cho bài đăng của bạn – Armstrongest

Trả lời

0

Một ví dụ đơn giản về cách sử dụng định tuyến trong ASP.NET

  1. Tạo Rỗng Web Application
  2. Thêm hình thức đầu tiên - Default.aspx
  3. Add biểu mẫu thứ hai - Second.aspx
  4. Thêm biểu mẫu thứ ba - Third.aspx
  5. Thêm vào mặc định.aspx 3 nút -

    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. đọc chuỗi truy vấn vào thứ ba trang

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

Bây giờ nếu bạn chạy chương trình, bạn sẽ có thể điều hướng đến hình thức thứ hai và thứ ba. Đây là cách nó được sử dụng để được. Hãy thêm định tuyến.

  1. Thêm mục mới - Global.aspx using 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. Trong default.aspx sửa đổi protected void Button1_Click (object sender, 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. Sửa tải trang trong third.aspx

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

Chạy chương trình, xin vui lòng lưu ý url trông sạch hơn nhiều - có được không nộp phần mở rộng trong đó (Second.aspx trở thành chỉ Thứ hai)

  1. Để chuyển tiếp thì một đối số

    • thêm nút mới để default.aspx với đoạn mã sau:

      protected void Button4_Click(object sender, EventArgs e) 
      { 
          Response.Redirect(GetRouteUrl("FourthRoute", new { Name = "Shoes" , Gender = "Male"})); 
      } 
      
    • Thêm mã sau đây để global.asax

      routes.MapPageRoute(
           "FourthRoute", 
           "Fourth/{Name}-{Gender}", 
           "~/Fourth.aspx" 
      ); 
      
    • tạo trang Fourth.aspx như sau tải trang:

      protected void Page_Load(object sender, EventArgs e) 
      { 
      Response.Write("Name is: " + RouteData.Values["Name"] + " and Gender is " + RouteData.Values["Gender"]); 
      } 
      
Các vấn đề liên quan