2010-07-26 22 views
1

是否可以在ASP.NET中傳遞/獲取類似page.aspx/value的變量?我希望有一個網頁,例如website.com/folder/name而不是website.com/folder/?name,並獲取該名稱的值。page.aspx/ASP.NET中的變量

回答

0

我剛剛做了類似的最近路由,以允許日期通過博客條目和東西。

這樣做對你的設置,你需要有一個網頁,其中將完成所有的處理,讓調用folder.aspx,然後添加的路由信息​​到你的Global.ascx.cs文件。

所以讓我們看看路線...

路線

路線需要從具體的工作,並在那裏工作的出路一般。這樣,請求將能夠找到適用於指定URL的最具體的版本。需要將以下代碼添加到您的Global.ascs.cs文件中。

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 
     SetRoutes(RouteTable.Routes); 
    } 

    private static void SetRoutes(RouteCollection routes) 
    { 

     routes.MapPageRoute("folder-file", 
          "{folder}/{file}", 
          "~/folder.aspx"); 

     routes.MapPageRoute("folder", 
          "{folder}", 
          "~/folder.aspx"); 
    } 

有一點要注意的是,你可能需要在除了這個,因爲這理清其他路線將攔截其他子文件引用。

權,現在的路線進行排序,那麼你可以訪問代碼的路線值folder.aspx頁的後面。背後

protected void Page_Load(object sender, EventArgs e) 
    { 
     var folder = Page.RouteData.Values["folder"] as string; 
     var file = Page.RouteData.Values["file"] as string; 

     lblFolder.Text = string.IsNullOrEmpty(folder) ? "nothing" : folder; 
     lblFile.Text = string.IsNullOrEmpty(file) ? "nothing" : file; 
    } 

上面的代碼

頁面代碼僅僅是一個例子,以你如何可以訪問路徑的值,然後我只是他們分配到一些標籤檢查空或空 - )

因此,要訪問folder.aspx頁面,您現在可以瀏覽到域/文件夾/名稱或域/文件夾。

希望這會有所幫助。

3

我認爲你可以使用ASP.Net路由:http://msdn.microsoft.com/en-us/library/cc668201.aspx 或URL重寫:http://www.codeproject.com/kb/aspnet/URLRewriter.aspx

差(從MSDN):

ASP.NET路由與URL重寫

ASP.NET路由與其他URL 重寫方案不同。 URL重寫 處理傳入的請求通過 實際上改變的是URL它 將請求發送到Web頁面之前。對於 例如,使用URL重寫 可以從 /產品/小工具/更改URL,以 /Products.aspx?id=4的應用程序。此外,重寫URL 通常沒有 API,用於在模式上創建基於 的URL。在URL重寫,如果你 更改URL模式,你必須 手動更新所有超鏈接 包含原始URL。

在ASP.NET路由,當進入的請求是 處理的URL不 改變,因爲路由可以提取從URL 值。當你不得不 創建一個URL,你傳遞參數 值到產生 的URL,你的方法。要更改網址 模式,請將其更改爲一個 位置,並且您在 的應用程序中創建的所有鏈接均基於該模式, 將自動使用新模式。自動使用新模式。