2011-09-01 71 views
0

我有這樣的定義了四種途徑:URL建築在ASP.NET MVC

//Project list with page number 
     routes.MapRoute(
      "Filtered projects 1", 
      "Projects/All/{page}", 
      new { controller = "Projects", action = "All", page = UrlParameter.Optional } 
      ); 

     //Project list with page number and filtering by region 
     routes.MapRoute(
      "Filtered projects 2", 
      "Projects/All/Regions/{regions}/{page}", 
      new { controller = "Projects", action = "All", regions = UrlParameter.Optional, page = UrlParameter.Optional} 
      ); 

     //Project list with page number and filtering by subject 
     routes.MapRoute(
      "Filtered projects 3", 
      "Projects/All/Subjects/{subjects}/{page}", 
      new { controller = "Projects", action = "All", subjects = UrlParameter.Optional, page = UrlParameter.Optional } 
      ); 

     //Project list with page number and filtering by region and subject 
     routes.MapRoute(
      "Filtered projects 4", 
      "Projects/All/Regions/{regions}/Subjects/{subjects}/{page}", 
      new { controller = "Projects", action = "All", regions = UrlParameter.Optional, subjects = UrlParameter.Optional, page = UrlParameter.Optional } 
      ); 

這讓我有一個分頁列表,它也可以通過地區或主題過濾。

我想與主題建立一系列鏈接,以便我可以點擊主題,並根據需要返回上面的某個網址,並根據需要附加/主題/ 主題名位。我還希望允許用戶點擊幾個鏈接,這應該會提供類似以上的網址/ Subject/_ * subject2 * _ subject3

我只是不知道如何做到這一點。我有部分視圖顯示的主題列表。當我生成超鏈接時,如何才能到達url並修改(或者根據需要添加或刪除)/ Subjects/*部分?

querystrings很容易,因爲它們可以很容易地打破價值巴黎,但與這些美麗的網址似乎相當困難......任何提示?

更新:我忘了補充說我想在同一個控制器上對不同的動作使用這種過濾方法。不知道這是否重要,但我認爲我會精確。

更新2:我覺得我的問題是不是很不夠清楚......

我所試圖做的是產生在我的局部視圖相對於鏈接從主視圖鏈接爲每個主題。問題在於鏈接需要符合上述路線之一。

說,我從/ localhost/Projects/All調用這個,並且想按subject1排序,我想讓urls說/ localhost/Projects/All/Subjects/subject1。如果我從/ localhost/Projects/Search/Something/10(即搜索「Something」的結果的第10頁,我沒有在列表中找到這條路線,但它在作品中),我會想要像localhost/Projects/Search/Something/Subjects/Subject1/10。或者從/ localhost/Projects/All/4到localhost/Projects/All/Subjects/subject1/4。

我可以很容易地將/ Subjects/Subject1位添加到URL中,但是不再符合我的路線... 換句話說,我如何從我的URL中提取各個位,修改它們並然後將它們縫合在一起?

這可能嗎?或者我應該忘記漂亮並使用querystrings?

回答

0

使用ViewContext.RouteData獲取當前路線信息。

+0

謝謝,這已經讓我進一步了,但是我的URL標識符/ Regions /和/ Subjects /不會將其添加到路由數據中,所以在獲取值之後我無法重新生成URL從中。你有什麼建議嗎? –

+0

解決了它。這幫助了我,謝謝! –

0

Url.Action("All","Projects", new{subjects = "some subject"})

會給你正確制定的​​URL一個剛剛通過了一個主題,改變PARAMS在匿名對象來改變它作爲一個apporpriate

+0

謝謝,我知道,但那不符合我的需要。 –