2014-12-23 17 views
1

可以說我有一個名爲ProductController的Controller類。如何使用asp.net mvc路由來調用不同的ActionResult方法並顯示與實際不同的URL?

我將使用三星作爲假設的產品類別。

我有一個Html.ActionLink一個頁面,看起來像這樣

~/Product/Samsung?t=Sony 

上現在可以說,我沒有叫三星一個ActionResult方法。

但可以說我有更多像上面一樣

~/Product/Toshiba?t=LG 

~/Product/Sony?t=Dynex 

沒關係的T =的一個環節?部分。

有沒有一種方法可以讓所有這些ActionLink在我的產品控制器中碰到相同的ActionResult方法?

public ActionResult TelevisionCategory() 
{ 
} 

就像某種URL路由選擇一樣,以便特定格式的任何URL都會觸及TelevisionCategory方法?

回答

2

聽起來就像您只需要一個自定義路由,它將標識符作爲第二個網址段而不是操作名稱。

像下面這樣就足夠了(你需要在你的路線配置添加此默認路由以上):

routes.MapRoute(
    "Products",           
    "Product/{category}",        
    new { controller = "Product", action = "TelevisionCategory" } 
); 

然後,你的操作方法應該是這樣的:

public ActionResult TelevisionCategory(string category) 

有關創建自定義路線的更多信息,請參見here

如果使用MVC5是一個選項,您也可以使用attribute routing,這個更直觀簡潔一些。

+0

上面的映射是否仍允許URL顯示爲Product/Samsung? – user1977591

+0

@ user1977591是的,這就是我寫它的原因! –

+0

謝謝先生,讓我試一試,看看我能否得到它的工作。 – user1977591

相關問題