2011-07-24 77 views
1

我有一個像http://..../controller/details/abc_1234這樣的路線處理網址。我想將以下網址路由到上一個網址:Asp.net MVC3地圖路線:在{id}之前添加前綴

http://..../controller/abc/1234 

看起來以下代碼不起作用?

routes.MapRoute(
    "abc", 
    "{controller}/abc/{id}", 
    new { controller = "controller", action = "Details", id = "abc_{id}" } 
); 

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "controller", action = "Details", id = UrlParameter.Optional } 
); 

回答

2
routes.MapRoute(
    "abc", 
    "{controller}/{action}/{key}_{id}", 
    new { controller = "controller" } 
); 

在您的行動將是這樣的:

public virtual ActionResult Details(string key, string id) 
{ 
} 
0
Try this with a action called `abc` 

routes.MapRoute(
     "abc", 
     "{controller}/abc/{id}", 
     new { controller = "controller", action = "abc", id = "abc_{id}" } 
    ); 
+0

但是我沒有名爲 「abc」 的動作。我需要將URL更改爲「詳細信息」操作。 – ca9163d9

+0

您可以創建一個名爲abc的操作,並從abc動作調用詳細信息操作 –

+0

是的,在刪除默認參數中的'abc_''後,該操作會生效。是否有可能在MapRoute函數中處理它,所以不需要創建另一個控制器? – ca9163d9