2008-10-06 155 views
10

我讀過ASP.NET Routing… Goodbye URL rewriting?Using Routing With WebForms,這些文章都很棒,但僅限於簡單的說明性「hello world」複雜性示例。使用Web窗體進行ASP.NET路由

是否有人在那裏使用ASP.NET路由與web表單在一個不平凡的方式?任何需要注意的問題?性能問題?在進入我自己的實施之前,我應該看看更多的推薦閱讀內容嗎?

編輯 找到這些額外的有用網址:

+0

請標記url-routing到您的文章 – Armstrongest 2008-11-11 01:29:11

回答

0

如何在ASP.NET

使用路由一個簡單的例子
  1. 創建空的Web應用程序
  2. 添加第一種形式 - Default.aspx的
  3. 添加第二種形式 - Second.aspx
  4. 添加第三個表單 - Third.aspx
  5. 添加到默認設置。ASPX 3個按鈕 - 第三頁

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

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"); 
} 
  • 閱讀查詢字符串現在,如果你運行程序,你將能夠瀏覽到第二和第三種形式。 這是過去的樣子。 讓我們添加路由。

    1. 使用System.Web.Routing添加新項目 - Global.aspx ;

      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. Default.aspx中修改 保護無效的button1_Click(對象發件人,EventArgs的) { //的Response.Redirect( 「Second.aspx」); Response.Redirect(GetRouteUrl(「SecondRoute」,null)); }在third.aspx

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

    運行程序

    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" })); 
    } 
    
  • 修改頁面加載,請注意,URL看起來清爽多了 - 有沒有文件擴展它(Second.aspx成爲第二個)

    1. 要傳遞多於一個參數

      • 添加新的按鈕,用下面的代碼的Default.aspx:

        protected void Button4_Click(object sender, EventArgs e) 
        { 
            Response.Redirect(GetRouteUrl("FourthRoute", new { Name = "Shoes" , Gender = "Male"})); 
        } 
        
      • 添加以下代碼到Global.asax中

        routes.MapPageRoute(
             "FourthRoute", 
             "Fourth/{Name}-{Gender}", 
             "~/Fourth.aspx" 
        ); 
        
      • 創建Fourth.aspx頁面具有以下頁面加載:

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