2013-01-10 54 views
0

我已經在RouteConfig的路由,重定向到Archive行動時,有一年一個月: -MVC路由到博客類別

routes.MapRoute("Blog", "Blog/{action}/{id}", 
new 
{ 
    controller = "Blog", 
    action = "show", 
    id = "" 
}); 

現在我希望有另一個MapRoute重定向到Archive存在某個類別時的操作,例如Blog/Archive?catId=2

我該如何做到這一點?

+0

呃 - 那條路線是爲了'show'行動?另外 - 你不'路由'查詢字符串參數;因爲它們不是url路徑的一部分。查詢字符串參數通常映射到目標操作方法上的參數。 –

+0

是不是一樣?你只在你的路線中指定了默認值。這意味着如果它沒有改變,它將使用'Blog/show'。爲了進入'Archive'動作,'Blog/Archive/2'應該可以工作..其中action方法接受'int id' ..而不指定其他路由。 –

+0

其實我犯了一個錯誤。我正在將類別重定向到與年/月操作相同的操作。我把這個分類改爲另一種行動,現在就開始工作。我不需要RouteConfig內的路由I beleive – Johann

回答

1

在你RouteConfig您可以添加

routes.MapRoute("Archive", "Blog/Archive", new {controller = "Blog", Action = "Archive" }); 

在你控制器,你可以有這樣的動作

public void Archive(int catId) { 
    ... 
} 

這將自動CATID查詢字符串值映射到CATID變量。

+2

注意:此路由映射必須在* global.asax中的其他(非歸檔)路由映射之前*爲此工作。否則'Blog/Archive'看起來會像'Blog/{action}',並首先被抓到。 – Faust

+0

其實我不需要這個路由操作,因爲我直接從部分視圖重定向。我的錯。但在未來可能會有所幫助,謝謝! – Johann